Lucene的MoreLikeThis (mlt)和FuzzyQuery (flt)有什么区别?
我正在通过Elasticsearch (ES)评估这两种查询类型,我发现它们在概念上非常相似:
mlt:将现有文档字段与其他文档字段vs进行比较flt:将字符串与其他文档的字段进行比较但是,flt性能似乎比mlt查询慢一个数量级。
我正在使用最新的ES,这反过来又使用Lucene 4.5。
来自像这样模糊文档:
模糊化所有作为字符串提供的术语,然后选择最佳的n个区分项。实际上,这混合了FuzzyQuery和MoreLikeThis的行为,但特别考虑了模糊评分因素。这通常对查询产生良好的效果,用户可以在多个字段中提供详细信息,并且不了解布尔查询语法,还需要一定程度的模糊匹配和快速查询。 对于每个源项,模糊变量保存在没有coord因子的BooleanQuery中(因为我们在任何一个文档中都不寻找多个变量的匹配)。此外,专门化的TermQuery用于变体,而不使用该变体的is,因为这将有利于更少见的术语,例如拼写错误。相反,所有变体都使用相同的以色列国防军排名(源查询术语的排序),这将被考虑到变量的boost中。如果索引中不存在源查询项,则使用变体的平均IDF。
发布于 2013-10-17 08:47:53
您正在比较更像这个查询和像这个查询一样模糊。尽管后者为“更像此”的查询增加了一些模糊性,但它与下面使用的模糊查询不一样。
“更像这样”允许您指定一个like_text和一个fields列表。因此,将返回在指定字段中包含该文本的文档。您可以调整术语的频率,以控制文档何时返回或被忽略,这样您就可以获得类似的、感兴趣的文档,这取决于您的需求。
“这样的模糊”具有类似的结构,实际上更像这个查询,它也使用内部的模糊查询来查找相似的文档。这意味着返回的文档不仅包含您在like_text中请求的条款,而且还包含类似的术语,对它们应用了一些模糊性。它速度慢的原因实际上是模糊查询,虽然它在Lucene 4.x中有了很大的改进,但是它的代价更高。
https://stackoverflow.com/questions/19364756
复制相似问题