Hi, it seems I do not raise a lot of interest here... anyway I try again with a simpler question.
Is MultiFieldQueryParser usable in 8.6.0 ? thanks -------- Message initial -------- De: Stephane Passignat <passig...@hotmail.com> Répondre à: java-user@lucene.apache.org À: java-user@lucene.apache.org Objet: MultiFieldQueryParser on integer and string (8.6.0) Date: Thu, 08 Oct 2020 16:48:40 +0200 Hi,I'm trying to index numeric, and then to query them using java api andlucene 8.6. I tried several numeric Field types, but I can't make itwork.Can someone help me to store numeric in the datastore and then toquery them ?ThanksStéphane Here is a simple JUnit testpackage 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", newBigInteger("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, QueryParsermultiFieldQueryParser, 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 = newMultiFieldQueryParser(new String[]{"longPoint", "Entity"}, analyzer); query(index, multiFieldQueryParser, query); }}