像这样的模糊和更像这样的区别?

时间:2013-10-14 16:25:34

标签: lucene elasticsearch similarity fuzzy-search morelikethis

Lucene的MoreLikeThis(mlt)有什么区别 和FuzzyQuery(flt)?

我正在通过Elasticsearch(ES)评估两种查询类型,我发现它们在概念上非常相似:

  • mlt:将现有文档字段与其他文档的字段vs
  • 进行比较
  • flt:将字符串与其他文档的字段进行比较

但是,flt性能似乎比mlt查询慢一个数量级。

我正在使用最新的ES,后者又使用Lucene 4.5。


来自fuzzy like this文档:

  

模糊化作为字符串提供的所有术语,然后选择最佳的n个区分术语。实际上,这混合了FuzzyQuery和MoreLikeThis的行为,但特别考虑了模糊评分因子。这通常会为查询产生良好的结果,用户可以在许多字段中提供详细信息,并且不了解布尔查询语法,并且还需要一定程度的模糊匹配和快速查询。

     

对于每个源项,模糊变体保存在BooleanQuery中,没有coord因子(因为我们不在任何一个doc中查找多个变体的匹配)。此外,专门的TermQuery用于变体,并且不使用该变体术语的IDF,因为这有利于稀有术语,例如拼写错误。相反,所有变体使用相同的IDF排名(源查询术语的排名),这是变体的提升中的因素。如果索引中不存在源查询字词,则使用变体的平均IDF。

1 个答案:

答案 0 :(得分:2)

您正在将more like this queryfuzzy like this query进行比较。虽然后者在“更喜欢这个”查询中添加了一些模糊性,但它与fuzzy query不同,后者在下面使用。

“更喜欢这个”允许您指定like_textfields列表。因此,将返回在指定字段中包含该文本的文档。您可以调整术语的频率来控制何时返回或忽略文档,以便根据您的要求获得相似且有趣的文档。

“像这样模糊”具有类似的结构,实际上更像是这个查询,它也在内部使用模糊查询来查找类似的文档。这意味着返回的文档不仅包含您在like_text中请求的条款,还包含类似的术语,对它们应用一些模糊性。其速度较慢的原因实际上是模糊查询,虽然使用Lucene 4.x进行了大量改进,但价格更高。