lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yonik Seeley <ysee...@gmail.com>
Subject Re: ParseQuery with quotes
Date Tue, 20 Dec 2005 18:07:29 GMT
On 12/20/05, John Powers <jpowers@configureone.com> 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: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message