: How can I trap this situation correctly? I receive user queries like this
: (quotes included):
:
: /from:"fred flintston*"/
:
: Which produces a query string of
:
: /+from:fred body:flintston/ (where /body/ is the default field)
either you've left something out, or some aspect of your situation is
broken ... passing the string you describe -- including the quotes -- to
QueryParser will not create an optional clause for body:flinston ... it
will create a PhraseQuery consisting of whatever Terms are produced by
your analyzer for the (unquoted) string...
fred flinston*
...note that the "*" is included in the input passed to your analyzer,
because it has no special meaning inside quotes.
: What I want is:
:
: / +from:fred +from:flintston*/
that would require both fred, and something starting with flinston, but it
wouldn't require them to be close together -- you can achieve that by
overriding QueryParser.getFieldQuery(String,String). inspect the
termText, if it contains something that looks prefix/wildcardish, then
split the input to get what you want, and delegate to
QueryParser.getPrefixQuery or getWildCardQuery and then combine up your
parts into a BooleanQuery.
Or... if you want to take it one step further and require that the clauses
are near eachother, you can construct a MultiPhraseQuery -- but you'll
need to have access to an IndexReader in your QueryParser so you can
expand the prefix/wildcard into it's Terms.
-Hoss
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]