我试图使用 MoreLikeThisComponent 来查找类似的文档。对于其中一个结果,我想知道 MLT 使用的术语,因为“interestingTerms”包含不属于文本分析结果的术语。
以下是在文本分析期间识别出的术语:
- 1er
- 延迟
- 莱施
- 储备
这是 TermsComponent 返回的内容:
- 1er
- 延迟
- 杰洛施特
- 洛施
- p12
- 储备
- 施耐德
所以根据文本分析的结果,术语“p12”和“schneider.go”不应该出现在TermsComponent返回的术语列表中。在文本分析过程中,术语“geloscht”被替换为“loesch”,因此也不应该出现在 TermsComponent 返回的术语列表中。
我的文本分析方法:首先,我使用 PatternReplaceCharFilter 删除传递给文本字段的部分文本。原因是所有文档都包含重复的文本部分。这些文本部分没有语义含义,用于表示文本类型、添加文本的用户以及添加文本块的日期。
TermsComponent 返回的两个附加术语来自原始文本,并被 PatternReplaceCharFilter 删除。
我检查了,MLT 识别的“interestingTerms”与TermsComponent 返回的相同。我还检查了存储 TermVector 的字段和没有 TermVector 的文本字段之间是否存在差异。对于这两种变体,TermsComponent 返回相同的术语。
由于 MLT 使用的术语与文本分析期间识别的术语不同,因此 MLT 返回的文档过多。
有人知道为什么 MLT 使用术语,而 TermsComponent 返回不属于文本分析结果的术语吗?
也许有人知道解决方案吗?
为了完整起见:我使用的是 2011 年 12 月 7 日开始的 Solr 4 Trunk 二进制版本。