Lucene Search即使它应该返回也没有结果

时间:2016-02-10 06:13:36

标签: java search lucene

我正在创建一个lucene搜索应用程序,我使用了不同分析器和各自indexSearcher的indexWriter的多个实例,但是返回的搜索结果是空的,即使我知道我已经索引了我正在搜索的特定单词。

这是我的SearchEngine类构造函数

this.indexers = new ArrayList<StandardIndexer>();
    this.indexers.add(new StandardIndexer(new StandardAnalyzer()));
    this.indexers.add(new StandardIndexer(new EnglishStemAnalyzer()));
    this.indexers.add(new StandardIndexer(new KeywordAnalyzer()));
    this.indexers.add(new StandardIndexer(new EnglishSynonymAnalyzer()));
    this.indexers.add(new StandardIndexer(new EnglishSynonymStemAnalyzer()));
    this.indexers.add(new StandardIndexer(new EnglishSynonymKeywordAnalyzer()));
    this.searchers = new ArrayList<StandardSearcher>();
    for (StandardIndexer indexer : this.indexers) {
        this.searchers.add(new StandardSearcher(indexer));
    }

StandardIndexer和StandardSearcher是我的索引器和搜索器的实现,因为我们可以看到indexer的实例用于创建indexSearcher,因此所使用的分析器的目录和类型也在索引器和搜索器对之间共享

1 个答案:

答案 0 :(得分:0)

您的问题是关于未知代码中的已知错误。

所以我写一般:

  • 您必须使用“几乎”相同的分析器进行索引和搜索。因此,最终索引中的标记(=词干后的词干)必须与查询中的标记匹配。
  • 在搜索索引文档之前,您必须确保提交已完成。
  • 请注意标准查询解析器会在空白处拆分。你无法在没有额外工作的情况下搜索带有空格的标记(转义空格,用短语搜索..)
  • 您可以使用luke查看索引目录https://github.com/DmitryKey/luke