Lucene查询无法按预期工作

时间:2015-07-31 15:46:05

标签: java lucene

运行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来查看索引,我可以通过“文档”选项卡看到它应该返回的索引中的结果,但是如果我使用“搜索”选项卡,它再次返回任何导致我的认为它与我的查询有关?

可能出现什么问题?

2 个答案:

答案 0 :(得分:0)

它不返回doc ids,它返回doc索引。

您需要拨打电话以获取该索引处的文档。有关详细信息,请查看JavaDoc for Collector

答案 1 :(得分:0)

我的索引为"TBD",并通过field:Value进行搜索... lucene区分大小写。

我现在正在将所有内容转换为小写。