I also agree that the single quote is probably a bad choice for an operator. In my code i'm actually using "#lit(<term>)" to make things as unambiguous as possible. (but this doesn't really follow the style of other Lucene query syntax operators)
And the reason I didn't use getFieldQuery is because it is using the analyzer to tokenize and would cause me to loose the raw terms, no? Maybe i'm not understanding the code here?
One thing to keep in mind is that literal queries will only work with Keyword fields. Literal searches will not work on fields that have been stemmed at indexing time. Perhaps the query parser could be made smart enough to do what the user wants here without them having to ask? Do we know at query time what options a particular field was indexed with?
- matt
On Sunday, February 23, 2003, at 02:35 AM, Otis Gospodnetic wrote:
Hello Matthew,
Nobody responded to this one. Any strong opinions about including this from developers? I thought this would be a useful thing, at first, but it may confuse people (users, not developers) more if they search for 'some phrase with stop words'. Actually, the diff uses TermQuery, not QueryParser's getFieldQuery method, so it wouldn't really work for phrases. Matthew, how come you didn't use getFieldQuery, like it is done for PhraseQuery, for instance? That would allow you to support searching for literal keywords/terms and phrases, I believe.
Does anyone think that including this would be a good idea?
Thanks, Otis
--- Matthew King <[EMAIL PROTECTED]> wrote:I just ran into a little problem while trying to query for a document
looking for a term that had been indexed using a Keyword field...
My application is using the StandardAnalyzer and the QueryParser to search the index, so my query looked something like this:
kw:FOOBAR
not surprisingly (now that I know what's going on) I wasn't getting any hits from this search (because the QueryParser was normalizing the query term be "foobar" when it had been indexed as "FOOBAR")
I know that i could create my own query to search for "FOOBAR", but it seems reasonable to add a LITERAL operator so that keywords can be searched using the QueryParser, no?
Here's the diff for my stab at implementing it:
diff -r1.25 QueryParser.jj 319c319 < "[", "]", "\"", "{", "}", "~", "*", "?" ]---
"[", "]", "\"", "{", "}", "~", "*", "?",
"'" ] > 321c321 < "[", "]", "\"", "{", "}", "~", "*", "?" ] ---"[", "]", "\"", "{", "}", "~", "*","?", "'" ] 350a351| <LITERAL: "'" (~["'"])+ "'">527a529,533} | term=<LITERAL> [ <CARAT> boost=<NUMBER> ] { q = new TermQuery(new Term(field, term.image.substring(1,
term.image.length()-1)));
I'm not so sure I like using the single quote here, but it was available...
What do people think? Is this useful to others?
- matt
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
__________________________________________________ Do you Yahoo!? Yahoo! Tax Center - forms, calculators, tips, more http://taxes.yahoo.com/
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
