我从数据库中选择了一些包含StackOverFlow
等特定单词的行,并将它们保存在文本文件中。
然后,我使用Lucene索引文件内容。
当我尝试使用Carrot2在索引文件上搜索StackOverFlow
时,它不会返回任何文档,但是对于我知道它们至少存在于一个文档中的其他单词,它会返回其中一些文档。
在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时,没有任何更改,它仍然没有显示搜索文档。
我如何解决我的问题?
答案 0 :(得分:1)
搜索结果中缺少文档的原因通常是用于索引文档的分析器与Carrot2在搜索期间使用的分析器之间的不匹配。默认情况下,Carrot2使用Lucene的StandardAnalyzer
,您使用LuceneDocumentSource.analyzer属性提供不同的分析器。