Ok, I understand the .toString() part. But, if I have some 19" in the text of these items, and I do a search with 19", that has been escaped before parsing....why am I not getting anything? The indexer analyzer took them out? So then to find these documents, I would want to either change the analyzer or take the quote out of the query? Correct?
On 12/20/05 12:07 PM, "Yonik Seeley" <[EMAIL PROTECTED]> wrote: > On 12/20/05, John Powers <[EMAIL PROTECTED]> wrote: >> I would like to be able to search for 19 inches with the quote. So I get a >> query like this: >> Line 1: +( (name:19"*^4 ld:19"*^2 sd:19"*^3 kw:19"*^1) ) >> >> >> That won't work, so I wanted to escape the quotes. The docs said to use a >> backslash. So I'm doing this: >> >> luceneQuery.toString().replaceAll("\"", "\\\\\"") > > It should be " => \", > so shouldn't that be luceneQuery.toString().replaceAll("\"", "\\\"") > >> And the result is: >> >> Line 2: +( (name:19\"*^4 ld:19\"*^2 sd:19\"*^3 kw:19\"*^1) ) >> >> This looks right. Then I put it into a MultiFieldQueryParser.parse() via: >> >> query = >> MultiFieldQueryParser.parse(luceneQuery.toString().replaceAll("\"", >> "\\\\\""), Indexer.CARTABLE, Indexer.analyzer); >> >> >> and I get: >> >> Parsed query: +(name:19"*^4.0 ld:19"*^2.0 sd:19"*^3.0 kw:19"*) > > This looks right. > >> Which of course, won't work. How can I get the escapes to survive through >> the parsing? > > The escapes are for parsing. You don't want them to survive parsing > unless you also indexed them with escapes. > Perhaps what is causing your confusion is that Query.toString() > doesn't currently re-escape special characters. > > -Yonik > > --------------------------------------------------------------------- > 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]