You could index the values in both a "text" and a separate "string" field.
Then you can query the text field by keyword as well as the string field by
the full literal value, or as a wildcard or prefix query (e.g.,
"Microsoft*"), or as a range query with the full literal string values.
-- Jack Krupansky
-----Original Message-----
From: Jochen Hebbrecht
Sent: Monday, August 20, 2012 9:13 AM
To: java-user@lucene.apache.org
Subject: Re: TermRangeQuery with multiple words
Hi Ian,
Thanks for your answer!
Well, my example might have been not so clear. Here's a better example:
Doc 01: TEST: "Microsoft Belgium"
Doc 02: TEST: "Apple"
Doc 03: TEST: "Microsoft France"
Doc 04: TEST: "Evian"
Doc 05: TEST: "Nokia"
Doc 06: TEST: "Novotel"
Doc 07: TEST: "Microsoft Germany"
Doc 08: TEST: "Microsoft Spain"
Now, I want to search for all documents which have the field TEST going
from "Microsoft Belgium" to "Microsoft Spain".
The problem is, I cannot search on multiple terms in a range :-( ...
What I can do, is to search from "Microsoft" to "Microsoft", this one
works. But not the one stated above ...
So the question is: can Lucene make a String range query on multiple terms?
Kind regards,
Jochen
2012/8/20 Ian Lea <ian....@gmail.com>
This won't work with TermRangeQuery because neither "test 1" not "test
3" are terms. "test" will be a term, output by the analyzer. You'll
be able to see the indexed terms in Luke.
Sounds very flaky anyway - you'd get "term 10 xxx" and "term 100 xxx"
as well as "term 1" and "term 2". If your TEST values are that
predictable you could split them up and index the number separately,
maybe using NumericField and build a query using NumericRangeQuery.
RegexQuery in contrib-queries might also be worth a look.
--
Ian.
On Mon, Aug 20, 2012 at 12:59 PM, Jochen Hebbrecht
<jochenhebbre...@gmail.com> wrote:
> Hi,
>
> I have 5 documents. Each document has a field TEST. Total structure is
> looking like this:
>
> Doc 01: TEST: "test 1 string"
> Doc 02: TEST: "test 2 string"
> Doc 03: TEST: "test 3 string"
> Doc 04: TEST: "test 4 string"
> Doc 05: TEST: "test 5 string"
>
> These fields are indexed as Index.Analyzed with the StandardAnalyzer.
> With Luke, I can see for example:
>
> Document: Doc 01
> Field: TEST
> Terms: test, 1, string
>
> But now I want to make rangesearch as:
>
> <<
> new TermRangeQuery("TEST", "test 1", "test 3", true, true);
>>>
>
> ... to pickup the first 3 documents. Unfortunately, this doesn't seem to
> work for multiple words.
>
> Can somebody help me correcting my TermRangeQuery?
>
> Thanks!
> Jochen
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org