Lucene4.4 IntField怎么才能搜索到?
package test; import java.io.File; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.FloatField; import org.apache.lucene.document.IntField; import org.apache.lucene.document.StringField; import org.apache.lucene.document.TextField; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.index.Term; 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.TermQuery; import org.apache.lucene.search.TopDocs; import org.apache.lucene.store.Directory; import org.apache.lucene.store.SimpleFSDirectory; import org.apache.lucene.util.Version; import org.junit.Test; public class Lucene44TC { @Test public void test() throws IOException, ParseException { File file = new File("c://index_"); if (file.exists()) { File[] f = file.listFiles(); for (int i = 0; i < f.length; i++) { f[i].delete(); } } else { file.mkdirs(); } Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_44); Directory indexDir = new SimpleFSDirectory(file); IndexWriter writer = new IndexWriter(indexDir, new IndexWriterConfig( Version.LUCENE_44, analyzer)); for (int i = 0; i < 100; i++) { Document doc = new Document(); doc.add(new IntField("ids", 10000000 + i, Field.Store.YES)); doc.add(new StringField("id", "10000000" + i, Field.Store.YES)); doc.add(new StringField("test1", "美好的明天" , Field.Store.YES)); doc.add(new TextField("title", "GOAT BLOOD in Sodium Citrate" + i, Field.Store.NO)); doc.add(new FloatField("score", 59.9F, Field.Store.YES)); writer.addDocument(doc); } writer.forceMerge(1, true); writer.close(); // //////////////////////////// IndexSearcher searcher = null; searcher = new IndexSearcher(DirectoryReader.open(indexDir)); // (1第一种不行) Query q = new QueryParser(Version.LUCENE_44, "ids", analyzer) .parse("10000001"); //no // (2第二种也不行) // q = new TermQuery(new Term("ids", "10000001")); no // q = new TermQuery(new Term("test1", "美好的明天")); ok System.out.println(q); TopDocs hits = searcher.search(q, 10); System.out.println(hits.totalHits); for (int i = 0; i < hits.scoreDocs.length; i++) { int docId = hits.scoreDocs[i].doc; Document hit = searcher.doc(docId); System.out.println(hit.toString()); } } }
以上是代码,我怎么才能搜索到Intfield这个字段
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
搜索的时候可以用NumericRangeQuery.
例如:
q = NumericRangeQuery.newIntRange("ids", 10000001, 10000001, true, true);
这样就能搜索到结果了。