You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by ra...@barclays.com on 2013/10/15 00:14:51 UTC

QueryParser stripping off Hyphen from query

Hi,

I am using the regular QueryParser to form a PhraseQuery. It works fine, but when it consists of a hyphen, it gets removed, hence resulting in unexpected results.

Note: I am NOT using the QueryParser.escape() method before parse() method as it results in a BooleanQuery, while I want a PhraseQuery.

Please suggest how to retain the hyphen ("-") in my query.

*** Code **
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
QueryParser parser = new QueryParser(Version.LUCENE_43, "CONTENTS", analyzer);
Query query = parser.parse(strSearch);
logger.info("Type of query: " + query.getClass().getSimpleName());
logger.info("query.toString: " + query.toString());

*** Log output ***
Contents of strSearch: "ab-cde"
Type of query: PhraseQuery
query.toString: CONTENTS:"ab cde"

Regards,
Raghu


_______________________________________________

This message is for information purposes only, it is not a recommendation, advice, offer or solicitation to buy or sell a product or service nor an official confirmation of any transaction. It is directed at persons who are professionals and is not intended for retail customer use. Intended for recipient only. This message is subject to the terms at: www.barclays.com/emaildisclaimer.

For important disclosures, please see: www.barclays.com/salesandtradingdisclaimer regarding market commentary from Barclays Sales and/or Trading, who are active market participants; and in respect of Barclays Research, including disclosures relating to specific issuers, please see http://publicresearch.barclays.com.

_______________________________________________

RE: QueryParser stripping off Hyphen from query

Posted by ra...@barclays.com.
Ian - Thank you for your inputs.

Regards,
Raghu


-----Original Message-----
From: Ian Lea [mailto:ian.lea@gmail.com] 
Sent: Tuesday, October 15, 2013 11:43 AM
To: java-user@lucene.apache.org
Subject: Re: QueryParser stripping off Hyphen from query

If you want to keep hyphens you could try WhitespaceAnalyzer.  But that may of course have knock on effects on other searches.  Don't forget to use the same analyzer for indexing and searching, unless you're doing clever things.

An alternative is to create the queries directly in code, but you'll still need to match up what you pass with what has been indexed.

--
Ian.


On Tue, Oct 15, 2013 at 12:38 AM,  <ra...@barclays.com> wrote:
> Could you please suggest which Analyzer to use in this case?
>
> I haven't yet explored much with Analyzers. I've always used the StandardAnalyzer.
>
> Regards,
> Raghu
>
>
> -----Original Message-----
> From: Uwe Schindler [mailto:uwe@thetaphi.de]
> Sent: Monday, October 14, 2013 6:38 PM
> To: java-user@lucene.apache.org
> Subject: RE: QueryParser stripping off Hyphen from query
>
> The problem is not query parser, it is your analyzer.
>
> -----
> Uwe Schindler
> H.-H.-Meier-Allee 63, D-28213 Bremen
> http://www.thetaphi.de
> eMail: uwe@thetaphi.de
>
>> -----Original Message-----
>> From: raghavendra.k.rao@barclays.com
>> [mailto:raghavendra.k.rao@barclays.com]
>> Sent: Tuesday, October 15, 2013 12:15 AM
>> To: java-user@lucene.apache.org
>> Subject: QueryParser stripping off Hyphen from query
>>
>> Hi,
>>
>> I am using the regular QueryParser to form a PhraseQuery. It works 
>> fine, but when it consists of a hyphen, it gets removed, hence 
>> resulting in unexpected results.
>>
>> Note: I am NOT using the QueryParser.escape() method before parse() 
>> method as it results in a BooleanQuery, while I want a PhraseQuery.
>>
>> Please suggest how to retain the hyphen ("-") in my query.
>>
>> *** Code **
>> Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
>> QueryParser parser = new QueryParser(Version.LUCENE_43, "CONTENTS", 
>> analyzer); Query query = parser.parse(strSearch); logger.info("Type 
>> of
>> query: " + query.getClass().getSimpleName());
>> logger.info("query.toString: " + query.toString());
>>
>> *** Log output ***
>> Contents of strSearch: "ab-cde"
>> Type of query: PhraseQuery
>> query.toString: CONTENTS:"ab cde"
>>
>> Regards,
>> Raghu
>>
>>
>> _______________________________________________
>>
>> This message is for information purposes only, it is not a 
>> recommendation, advice, offer or solicitation to buy or sell a 
>> product or service nor an official confirmation of any transaction. 
>> It is directed at persons who are professionals and is not intended 
>> for retail customer use. Intended for recipient only. This message is subject to the terms at:
>> www.barclays.com/emaildisclaimer.
>>
>> For important disclosures, please see:
>> www.barclays.com/salesandtradingdisclaimer regarding market 
>> commentary from Barclays Sales and/or Trading, who are active market 
>> participants; and in respect of Barclays Research, including 
>> disclosures relating to specific issuers, please see http://publicresearch.barclays.com.
>>
>> _______________________________________________
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>
> _______________________________________________
>
> This message is for information purposes only, it is not a recommendation, advice, offer or solicitation to buy or sell a product or service nor an official confirmation of any transaction. It is directed at persons who are professionals and is not intended for retail customer use. Intended for recipient only. This message is subject to the terms at: www.barclays.com/emaildisclaimer.
>
> For important disclosures, please see: www.barclays.com/salesandtradingdisclaimer regarding market commentary from Barclays Sales and/or Trading, who are active market participants; and in respect of Barclays Research, including disclosures relating to specific issuers, please see http://publicresearch.barclays.com.
>
> _______________________________________________
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>

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

_______________________________________________

This message is for information purposes only, it is not a recommendation, advice, offer or solicitation to buy or sell a product or service nor an official confirmation of any transaction. It is directed at persons who are professionals and is not intended for retail customer use. Intended for recipient only. This message is subject to the terms at: www.barclays.com/emaildisclaimer.

For important disclosures, please see: www.barclays.com/salesandtradingdisclaimer regarding market commentary from Barclays Sales and/or Trading, who are active market participants; and in respect of Barclays Research, including disclosures relating to specific issuers, please see http://publicresearch.barclays.com.

_______________________________________________

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


Re: QueryParser stripping off Hyphen from query

Posted by Ian Lea <ia...@gmail.com>.
If you want to keep hyphens you could try WhitespaceAnalyzer.  But
that may of course have knock on effects on other searches.  Don't
forget to use the same analyzer for indexing and searching, unless
you're doing clever things.

An alternative is to create the queries directly in code, but you'll
still need to match up what you pass with what has been indexed.

--
Ian.


On Tue, Oct 15, 2013 at 12:38 AM,  <ra...@barclays.com> wrote:
> Could you please suggest which Analyzer to use in this case?
>
> I haven’t yet explored much with Analyzers. I've always used the StandardAnalyzer.
>
> Regards,
> Raghu
>
>
> -----Original Message-----
> From: Uwe Schindler [mailto:uwe@thetaphi.de]
> Sent: Monday, October 14, 2013 6:38 PM
> To: java-user@lucene.apache.org
> Subject: RE: QueryParser stripping off Hyphen from query
>
> The problem is not query parser, it is your analyzer.
>
> -----
> Uwe Schindler
> H.-H.-Meier-Allee 63, D-28213 Bremen
> http://www.thetaphi.de
> eMail: uwe@thetaphi.de
>
>> -----Original Message-----
>> From: raghavendra.k.rao@barclays.com
>> [mailto:raghavendra.k.rao@barclays.com]
>> Sent: Tuesday, October 15, 2013 12:15 AM
>> To: java-user@lucene.apache.org
>> Subject: QueryParser stripping off Hyphen from query
>>
>> Hi,
>>
>> I am using the regular QueryParser to form a PhraseQuery. It works
>> fine, but when it consists of a hyphen, it gets removed, hence
>> resulting in unexpected results.
>>
>> Note: I am NOT using the QueryParser.escape() method before parse()
>> method as it results in a BooleanQuery, while I want a PhraseQuery.
>>
>> Please suggest how to retain the hyphen ("-") in my query.
>>
>> *** Code **
>> Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
>> QueryParser parser = new QueryParser(Version.LUCENE_43, "CONTENTS",
>> analyzer); Query query = parser.parse(strSearch); logger.info("Type of
>> query: " + query.getClass().getSimpleName());
>> logger.info("query.toString: " + query.toString());
>>
>> *** Log output ***
>> Contents of strSearch: "ab-cde"
>> Type of query: PhraseQuery
>> query.toString: CONTENTS:"ab cde"
>>
>> Regards,
>> Raghu
>>
>>
>> _______________________________________________
>>
>> This message is for information purposes only, it is not a
>> recommendation, advice, offer or solicitation to buy or sell a product
>> or service nor an official confirmation of any transaction. It is
>> directed at persons who are professionals and is not intended for
>> retail customer use. Intended for recipient only. This message is subject to the terms at:
>> www.barclays.com/emaildisclaimer.
>>
>> For important disclosures, please see:
>> www.barclays.com/salesandtradingdisclaimer regarding market commentary
>> from Barclays Sales and/or Trading, who are active market
>> participants; and in respect of Barclays Research, including
>> disclosures relating to specific issuers, please see http://publicresearch.barclays.com.
>>
>> _______________________________________________
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>
> _______________________________________________
>
> This message is for information purposes only, it is not a recommendation, advice, offer or solicitation to buy or sell a product or service nor an official confirmation of any transaction. It is directed at persons who are professionals and is not intended for retail customer use. Intended for recipient only. This message is subject to the terms at: www.barclays.com/emaildisclaimer.
>
> For important disclosures, please see: www.barclays.com/salesandtradingdisclaimer regarding market commentary from Barclays Sales and/or Trading, who are active market participants; and in respect of Barclays Research, including disclosures relating to specific issuers, please see http://publicresearch.barclays.com.
>
> _______________________________________________
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>

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


RE: QueryParser stripping off Hyphen from query

Posted by ra...@barclays.com.
Could you please suggest which Analyzer to use in this case?

I haven’t yet explored much with Analyzers. I've always used the StandardAnalyzer.

Regards,
Raghu


-----Original Message-----
From: Uwe Schindler [mailto:uwe@thetaphi.de] 
Sent: Monday, October 14, 2013 6:38 PM
To: java-user@lucene.apache.org
Subject: RE: QueryParser stripping off Hyphen from query

The problem is not query parser, it is your analyzer.

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: uwe@thetaphi.de

> -----Original Message-----
> From: raghavendra.k.rao@barclays.com
> [mailto:raghavendra.k.rao@barclays.com]
> Sent: Tuesday, October 15, 2013 12:15 AM
> To: java-user@lucene.apache.org
> Subject: QueryParser stripping off Hyphen from query
> 
> Hi,
> 
> I am using the regular QueryParser to form a PhraseQuery. It works 
> fine, but when it consists of a hyphen, it gets removed, hence 
> resulting in unexpected results.
> 
> Note: I am NOT using the QueryParser.escape() method before parse() 
> method as it results in a BooleanQuery, while I want a PhraseQuery.
> 
> Please suggest how to retain the hyphen ("-") in my query.
> 
> *** Code **
> Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
> QueryParser parser = new QueryParser(Version.LUCENE_43, "CONTENTS", 
> analyzer); Query query = parser.parse(strSearch); logger.info("Type of
> query: " + query.getClass().getSimpleName());
> logger.info("query.toString: " + query.toString());
> 
> *** Log output ***
> Contents of strSearch: "ab-cde"
> Type of query: PhraseQuery
> query.toString: CONTENTS:"ab cde"
> 
> Regards,
> Raghu
> 
> 
> _______________________________________________
> 
> This message is for information purposes only, it is not a 
> recommendation, advice, offer or solicitation to buy or sell a product 
> or service nor an official confirmation of any transaction. It is 
> directed at persons who are professionals and is not intended for 
> retail customer use. Intended for recipient only. This message is subject to the terms at:
> www.barclays.com/emaildisclaimer.
> 
> For important disclosures, please see:
> www.barclays.com/salesandtradingdisclaimer regarding market commentary 
> from Barclays Sales and/or Trading, who are active market 
> participants; and in respect of Barclays Research, including 
> disclosures relating to specific issuers, please see http://publicresearch.barclays.com.
> 
> _______________________________________________


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


_______________________________________________

This message is for information purposes only, it is not a recommendation, advice, offer or solicitation to buy or sell a product or service nor an official confirmation of any transaction. It is directed at persons who are professionals and is not intended for retail customer use. Intended for recipient only. This message is subject to the terms at: www.barclays.com/emaildisclaimer.

For important disclosures, please see: www.barclays.com/salesandtradingdisclaimer regarding market commentary from Barclays Sales and/or Trading, who are active market participants; and in respect of Barclays Research, including disclosures relating to specific issuers, please see http://publicresearch.barclays.com.

_______________________________________________

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


RE: QueryParser stripping off Hyphen from query

Posted by Uwe Schindler <uw...@thetaphi.de>.
The problem is not query parser, it is your analyzer.

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: uwe@thetaphi.de

> -----Original Message-----
> From: raghavendra.k.rao@barclays.com
> [mailto:raghavendra.k.rao@barclays.com]
> Sent: Tuesday, October 15, 2013 12:15 AM
> To: java-user@lucene.apache.org
> Subject: QueryParser stripping off Hyphen from query
> 
> Hi,
> 
> I am using the regular QueryParser to form a PhraseQuery. It works fine, but
> when it consists of a hyphen, it gets removed, hence resulting in unexpected
> results.
> 
> Note: I am NOT using the QueryParser.escape() method before parse()
> method as it results in a BooleanQuery, while I want a PhraseQuery.
> 
> Please suggest how to retain the hyphen ("-") in my query.
> 
> *** Code **
> Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
> QueryParser parser = new QueryParser(Version.LUCENE_43, "CONTENTS",
> analyzer); Query query = parser.parse(strSearch); logger.info("Type of
> query: " + query.getClass().getSimpleName());
> logger.info("query.toString: " + query.toString());
> 
> *** Log output ***
> Contents of strSearch: "ab-cde"
> Type of query: PhraseQuery
> query.toString: CONTENTS:"ab cde"
> 
> Regards,
> Raghu
> 
> 
> _______________________________________________
> 
> This message is for information purposes only, it is not a recommendation,
> advice, offer or solicitation to buy or sell a product or service nor an official
> confirmation of any transaction. It is directed at persons who are
> professionals and is not intended for retail customer use. Intended for
> recipient only. This message is subject to the terms at:
> www.barclays.com/emaildisclaimer.
> 
> For important disclosures, please see:
> www.barclays.com/salesandtradingdisclaimer regarding market commentary
> from Barclays Sales and/or Trading, who are active market participants; and in
> respect of Barclays Research, including disclosures relating to specific issuers,
> please see http://publicresearch.barclays.com.
> 
> _______________________________________________


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