运行Lucene的5.2.1版。
以下是我正在运行的代码:
Path indexPath = Paths.get("index");
Directory dir = NIOFSDirectory.open(indexPath);
IndexWriterConfig iwc = new IndexWriterConfig(new StandardAnalyzer());
iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
IndexWriter indexWriter = new IndexWriter(dir, iwc);
IndexReader indexReader = DirectoryReader.open(indexWriter, false);
IndexSearcher indexSearcher = new IndexSearcher(directoryReader);
QueryParser queryParser = new QueryParser("defaultField", new StandardAnalyzer());
String query = "field:value";
indexSearcher.search(queryParser.parse(query), new SimpleCollector() {
@Override
public void collect(int doc) throws IOException {
System.out.println("result " + doc);
}
@Override
public boolean needsScores() {
return false;
}
});
我希望将文档ID打印到控制台,但我没有得到任何结果。
如果使用Luke来查看索引,我可以通过“文档”选项卡看到它应该返回的索引中的结果,但是如果我使用“搜索”选项卡,它再次返回任何导致我的认为它与我的查询有关?
可能出现什么问题?
答案 0 :(得分:0)
它不返回doc ids,它返回doc索引。
您需要拨打电话以获取该索引处的文档。有关详细信息,请查看JavaDoc for Collector。
答案 1 :(得分:0)
我的索引为"TBD"
,并通过field:Value
进行搜索... lucene区分大小写。
我现在正在将所有内容转换为小写。