1

StackOverFlow从我的数据库中选择了一些包含特定单词的行,并将它们保存在一个文本文件中。然后,我使用 Lucene 来索引文件内容。

当我尝试StackOverFlow使用 Carrot2 搜索索引文件时,它不返回任何文档,但是对于我知道它们至少存在于一个文档中的换句话说,它返回其中一些。

在 Carrot2 文档中,有一个关于名为的属性的解释Maximum word document frequency

最大 word 文档频率。单词在所有文档中所占的最大文档频率。文档频率大于 maxWordDf 的单词将被忽略。例如,当 maxWordDf 为 0.4 时,超过 40% 的文档中出现的单词将被忽略。值 1.0 表示将考虑所有单词,无论它们出现在多少个文档中。当大多数输入文档中出现某些单词(例如,页眉或页脚中的公司名称)并且这些单词支配集群标签时,此属性可能很有用。在这种情况下,将 maxWordDf 设置为低于 1.0 的值,例如 0.9 可以改善集群。

这个属性的另一个有用的应用是当需要只生成非常特定的集群时,即包含少量文档的集群。这可以通过将 maxWordDf 设置为极低的值来实现,例如 0.1 或 0.05。

所以,当我设置maxWordDf为 1.0 时,没有任何变化,它仍然在搜索中显示没有文档。

我该如何解决我的问题?

4

1 回答 1

1

搜索结果中缺少文档的原因通常是用于索引文档的分析器与搜索期间 Carrot2 使用的分析器不匹配。默认情况下,Carrot2 使用 Lucene 的,您使用LuceneDocumentSource.analyzer属性StandardAnalyzer提供不同的分析器。

于 2018-03-09T09:08:28.977 回答