【问题标题】:Relevance feedback in Apache SolrApache Solr 中的相关性反馈
【发布时间】:2013-06-05 04:09:11
【问题描述】:

我想在Solr 中实现relevance feedback。 Solr 已经有一个More Like This 功能:给定一个单个文档,返回一组按与单个输入文档的相似度排列的相似文档。是否可以将 Solr 的 More Like This 功能配置为更像那些?换句话说:给定一组文档,返回与输入集相似的文档列表(按相似度排序)。

根据this question的回答将Solr的More Like This变成More Like 可以通过以下方式完成:

  1. 获取返回指定文档的查询结果集的url。例如,url http://solrServer:8983/solr/select?q=id:1%20id:2%20id:3 返回对查询 id:1 id:2 id:3 的响应,这实际上是文档 1、2、3 的串联。
  2. 把上面的url(指定文档的串联)放在More Like This handler的url.streamGET参数中:http://solrServer:8983/solr/mlt?mlt.fl=text&mlt.mintf=0&stream.url=http://solrServer:8983/solr/select%3Fq=id:1%20id:2%20id:3。现在,More Like This 处理程序将文档 1、2 和 3 的串联处理为单个输入文档,并返回与串联相似的排序文档集。

这是一个非常糟糕的实现:将输入文档集视为一个大文档会区分短文档,因为短文档仅占整个大文档的一小部分。

Solr's More Like 此功能由The Rocchio Algorithm 的变体实现:它采用(单个)输入文档的前 20 个术语(具有最高 TF-IDF 值的术语)并将这些术语用作修改后的查询,根据他们的 TF-IDF 提升。我正在寻找一种方法来配置 Solr 的 More Like This 功能,以将多个文档作为其输入,从每个输入文档中提取前 n 个术语,并使用根据其 TF-IDF 提升的这些术语查询索引。

是否可以将 More Like This 配置为这种行为方式?如果没有,在 Solr 中实现相关反馈的最佳方式是什么?

【问题讨论】:

    标签: solr lucene information-retrieval


    【解决方案1】:

    很遗憾,无法以这种方式配置 MLT 处理程序。

    一种方法是实现自定义SearchComponent 并将其注册到(专用)SearchHadler

    我已经做过类似的事情,如果你看一下 MLT 组件的original implementation,这很容易。

    最困难的部分是来自不同shard服务器的结果的同步,但是如果你不使用shards可以跳过。

    我还强烈建议在您的实现中使用您自己的参数,以防止与其他组件发生冲突。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 2014-12-09
      相关资源
      最近更新 更多