Perfect!  Thank you very much!  Exactly what I needed, and simple!

Tony

-----Original Message-----
From: Uwe Schindler <u...@thetaphi.de> 
Sent: Tuesday, November 14, 2023 05:51
To: java-user@lucene.apache.org
Subject: Re: StandardQueryParser and numeric fields

Hi,

By default the standard query parser has no idea about field types (and it 
cannot because it does not know the schema of your index). If you want to allow 
searching in non-text fields (TextField, all other - also normal StringField 
breaks easy), you need to customize it.

There are 2 query parsers that I would call "standard":

  * For the default / classic QueryParser the QueryParser#newXYQuery
    methods need to be adapted (by subclassing) to generate a query
    based on the text input. This is how Solr/Elasticsearch adapt their
    schemas.
  * For the flexible query parser (I think you mean that one with
    StandardQueryParser), there is an option to use PointsConfig
    instances and set a "per field" mapping how to parse points. Use
    StandardQueryParser#setPointsConfigMap​() for that. Unfortunately
    Javadocs is missing....

This is what Solr/Elasticsearch/Opensearch do.

Uwe

Am 14.11.2023 um 03:01 schrieb Tony Schwartz:
> Hello,
>
>   
>
> I'm banging my head at this point, hoping someone can help me.
>
>   
>
> I can't get StandardQueryParser to work on numeric fields.  Luke 
> v9.8.0 finds the records for me.  Example search query string in Luke that 
> works:
> eventIdNum:3001
>
>   
>
> Here is my code:
>
>   
>
> Query initQuery() {
>
> StandardQueryParser p = new StandardQueryParser( analyzer );
>
> p.setDefaultOperator( StandardQueryConfigHandler.Operator.AND );
>
> String queryString = "eventIdNum:3001";
>
> return p.parse( queryString, "any" );
>
> }
>
>   
>
> here is how the field was added to the index:
>
> d.add( new IntField( "eventIdNum", 3001, Field.Store.NO ) );
>
>   
>
> I've tried various analyzers.  Example:  new StandardAnalyzer( 
> CharArraySet.EMPTY_SET );
>
>   
>
>   
>
> I'm sure there is something I'm missing here, but I can't seem to 
> track down what I'm missing.  The analyzer is the exact same analyzer 
> I'm using during indexing.  It's a PerFieldAnalyzerWrapper.  The 
> specific analyzer for the numeric fields is the one I mentioned above 
> (StandardAnalyzer).
>
>   
>
> The query used is:
>
> indexSearcher.search( query, 10 );
>
>   
>
> Thank you,
>
>   
>
> Tony Schwartz
>
>   
>
>   
>
>
--
Uwe Schindler
Achterdiek 19, D-28357 Bremen
https://www.thetaphi.de
eMail:u...@thetaphi.de


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

Reply via email to