: try to use RegexQuery

Except that his input string is longer then the terms he wants to match 
on.  

It sounds like what you are looking for is essentially a simplified use 
case of the "longest matching sub-phrase" problem...
http://www.nabble.com/Dictionary-lookup-possibilities-to22977277.html#a23087470

...except that you have the special case where (unless you simplified your 
example) you only care about the "longest matching prefix"

you could write an anaylyser that splits the input on each character, and 
then concats it's offset

Input: abcdef
Output: a_1, b_2, c_3, d_4, e_5, f_6

...in which case you use that analyzer when indexing; but at query time 
you use that anlyzer to build a BooleanQuery (instead of a PhraseQuery 
like QueryParser would do by default) and now a search for "abcdef" will 
match "abcde" with a higher score then "abcd" but it won't match "bcdef" 
at all.

Out of curiousity: what's your specific use case?  I've never heard of 
anyone wanting to match on something character-by-character like this 
(usually it's the reverse: people want "abcd" to match "abcde")

: > Actually, what I need is next: search on a query string step-by-step,
: > trimming last char on each step. Small example:
: > 
: > In index we've: abc, abcdef, xyz
: > When search on abcdefgh the most relevant result should be abcdef, while
: > searching on abcde the best one is abc.



-Hoss


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to