More Like This (MLT) 与 Solr 中正常 select 查询的区别
Difference of More Like This (MLT) and normal select query in Solr
有人可以解释一下 Solr 中 MLT 和普通 select 查询的确切区别吗?我知道 Solr 使用 TF.IDF 的高级形式根据文本字段的 select 查询对文档进行评分,但是使用 MLT 时评分算法有何不同?
我不确定这个问题是否真的有意义 - More Like This 用于查找更多与您已有的文档相似的文档。这不同于输入查询并想要返回一些东西,它们用于解决非常不同的操作模式。
在幕后,它们都是 "looks up something in the index based on input" 含义中的查询,对于 MLT 来说,是现有文档中的术语,而不是用户输入的查询。
可以看到how the MLT query is built in MoreLikeThis.java。如果我正确阅读代码,将使用 PriorityQueue 获取所有术语的分数,然后将其作为增强查询添加到布尔查询中的大量术语,其中每个术语都设置为应该出现。这样,术语会根据 MLT 语义得到提升,同时在幕后使用 ClassicSimilarity。
但同样,MLT 的用例与您使用常规查询时的用例非常不同。
有人可以解释一下 Solr 中 MLT 和普通 select 查询的确切区别吗?我知道 Solr 使用 TF.IDF 的高级形式根据文本字段的 select 查询对文档进行评分,但是使用 MLT 时评分算法有何不同?
我不确定这个问题是否真的有意义 - More Like This 用于查找更多与您已有的文档相似的文档。这不同于输入查询并想要返回一些东西,它们用于解决非常不同的操作模式。
在幕后,它们都是 "looks up something in the index based on input" 含义中的查询,对于 MLT 来说,是现有文档中的术语,而不是用户输入的查询。
可以看到how the MLT query is built in MoreLikeThis.java。如果我正确阅读代码,将使用 PriorityQueue 获取所有术语的分数,然后将其作为增强查询添加到布尔查询中的大量术语,其中每个术语都设置为应该出现。这样,术语会根据 MLT 语义得到提升,同时在幕后使用 ClassicSimilarity。
但同样,MLT 的用例与您使用常规查询时的用例非常不同。