For LongPoint field, you need to use methods that returns Query in LongPoint
class.

 


static
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/search/Query.ht
ml> Query

 
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/document/LongPo
int.html#newExactQuery-java.lang.String-long-> newExactQuery(
<https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external
=true> String field, long value)

Create a query for matching an exact long value.


static
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/search/Query.ht
ml> Query

 
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/document/LongPo
int.html#newRangeQuery-java.lang.String-long:A-long:A-> newRangeQuery(
<https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external
=true> String field, long[] lowerValue, long[] upperValue)

Create a range query for n-dimensional long values.


static
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/search/Query.ht
ml> Query

 
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/document/LongPo
int.html#newRangeQuery-java.lang.String-long-long-> newRangeQuery(
<https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external
=true> String field, long lowerValue, long upperValue)

Create a range query for long values.


static
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/search/Query.ht
ml> Query

 
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/document/LongPo
int.html#newSetQuery-java.lang.String-java.util.Collection-> newSetQuery(
<https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external
=true> String field,
<https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-exte
rnal=true> Collection<
<https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=t
rue> Long> values)

Create a query matching any of the specified 1D values.


static
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/search/Query.ht
ml> Query

 
<https://lucene.apache.org/core/8_6_1/core/org/apache/lucene/document/LongPo
int.html#newSetQuery-java.lang.String-long...-> newSetQuery(
<https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external
=true> String field, long... values)

Create a query matching any of the specified 1D values.

 

Regards,

Karthick

 

-----Original Message-----
From: Nicolás Lichtmaier [mailto:nicol...@wolfram.com.INVALID] 
Sent: Tuesday, November 24, 2020 1:25 PM
To: java-user@lucene.apache.org; Stephane Passignat <passig...@hotmail.com>
Subject: Re: MultiFieldQueryParser on integer and string (8.6.0)

 

I think you will need to subclass MultiFieldQueryParser so that the proper
Query is created when the field is the numeric one. Maybe overriding
createFieldQuery().

 

El 8/10/20 a las 11:48, Stephane Passignat escribió:

> Hi,

> I'm trying to index numeric, and then to query them using java api and 

> lucene 8.6. I tried several numeric Field types, but I can't make it 

> work.

> Can someone help me to store numeric in the datastore and then to 

> query them ?

> ThanksStéphane

> 

> Here is a simple JUnit test

> package test.data;

> import org.apache.lucene.analysis.standard.StandardAnalyzer;

> import org.apache.lucene.document.*;

> import org.apache.lucene.index.DirectoryReader;

> import org.apache.lucene.index.IndexReader;

> import org.apache.lucene.index.IndexWriter;

> import org.apache.lucene.index.IndexWriterConfig;

> import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;

> import org.apache.lucene.queryparser.classic.ParseException;

> import org.apache.lucene.queryparser.classic.QueryParser;

> import org.apache.lucene.search.IndexSearcher;

> import org.apache.lucene.search.Query; import 

> org.apache.lucene.search.ScoreDoc;

> import org.apache.lucene.search.TopDocs; import 

> org.apache.lucene.store.Directory;

> import org.apache.lucene.store.RAMDirectory;

> import org.junit.Assert;

> import org.junit.BeforeClass;

> import org.junit.Test;

> import org.junit.runner.RunWith;

> import org.junit.runners.Parameterized;

> 

> import java.io.IOException;

> import java.math.BigInteger;

> import java.util.Arrays;

> import java.util.Collection;

> 

> @RunWith(Parameterized.class)

> public class MTest {

>     static Directory index = new RAMDirectory();

>     private String query;

> 

>     public MTest(String query) {

>        this.query = query;

>     }

> 

>     @Parameterized.Parameters(name = "{0}")

>     public static Collection<Object[]> data() {

>        Object[][]

>              scannedClasses =

>              new Object[][]{{"TextField:Client"},

>                          {"LongPoint:17"},

>                          {"LongPoint:[16 TO 18]"},

>                          {"BigIntegerPoint:21"},

>                          {"BigIntegerPoint:[20 TO 22]"},

>                          {"StringField:Stephane"},

>                          {"Date:20200615"},

>                          {"Date:[20200614 TO 20200616]"},

>                          {"DoublePoint:37"},

>                          {"DoublePoint:[37 TO 38]"},};

>        return Arrays.asList(scannedClasses);

>     }

> 

>     @BeforeClass

>     public static void init() throws IOException, ParseException {

>        StandardAnalyzer analyzer = new StandardAnalyzer();

>        IndexWriterConfig config = new IndexWriterConfig(analyzer);

>        config.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);

>        try (IndexWriter writer = new IndexWriter(index, config)) {

>           final Document doc = new Document();

>           doc.add(new TextField("TextField", "Client", 

> Field.Store.YES));

>           doc.add(new StringField("StringField", "Stephane", 

> Field.Store.YES));

>           doc.add(new LongPoint("LongPoint", 17));

>           doc.add(new BigIntegerPoint("BigIntegerPoint", new 

> BigInteger("21")));

>           doc.add(new DoublePoint("DoublePoint", new Double(37.7)));

>           doc.add(new StringField("Date", "20200615", 

> Field.Store.YES));

>           writer.addDocument(doc);

>           writer.commit();

>        }

>     }

> 

>     private void query(Directory index, QueryParser 

> multiFieldQueryParser, String query) throws ParseException, 

> IOException {

>        System.out.println("query = " + query);

>        Query q = multiFieldQueryParser.parse(query);

>        int hitsPerPage = 10;

>        IndexReader reader = DirectoryReader.open(index);

>        IndexSearcher searcher = new IndexSearcher(reader);

>        TopDocs docs = searcher.search(q, hitsPerPage);

>        ScoreDoc[] hits = docs.scoreDocs;

>        Assert.assertEquals(query, 1, hits.length);

>     }

> 

>     @Test

>     public void testString() throws IOException, ParseException {

>        StandardAnalyzer analyzer = new StandardAnalyzer();

>        final QueryParser multiFieldQueryParser = new 

> MultiFieldQueryParser(new String[]{"longPoint", "Entity"}, analyzer);

>        query(index, multiFieldQueryParser, query);

>     }

> }

> 

> 

 

---------------------------------------------------------------------

To unsubscribe, e-mail:  <mailto:java-user-unsubscr...@lucene.apache.org>
java-user-unsubscr...@lucene.apache.org

For additional commands, e-mail:  <mailto:java-user-h...@lucene.apache.org>
java-user-h...@lucene.apache.org

 


-- 
Learn more 
<https://www.trigent.com/lib/signature/test-automation/?utm_source=trigent-sign&utm_medium=email&utm_campaign=automate>
 
about our Test Automation Service.
 
<https://www.trigent.com/lib/signature/test-automation/?utm_source=trigent-sign&utm_medium=email&utm_campaign=automate>

Reply via email to