sna*_*ile 15 lucene solr information-retrieval
我想在Solr中实现相关性反馈.Solr中已经有更多类似这样的功能:给定一个单一的文件,返回一组按照相似性排名的单输入文件类似的文件的.是否可以将Solr的更像这个功能配置为更像那些?换句话说:给定一组文档,返回类似于输入集的文档列表(按相似性排序).
根据这个问题的答案,将Solr的更多内容变得更像那些可以通过以下方式完成:
http://solrServer:8983/solr/select?q=id:1%20id:2%20id:3返回对查询的响应,该查询id:1 id:2 id:3实际上是文档1,2,3的串联.url.streamMore Like This处理程序的GET参数中: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的更多喜欢此功能是通过Rocchio算法的变体实现的:它采用(单个)输入文档的前20个术语(具有最高TF-IDF值的术语)并使用这些术语作为修改后的查询,根据他们的TF-IDF.我正在寻找一种方法来配置Solr的更像这个功能,以多个文档作为输入,从每个输入文档中提取前n个术语,并根据TF-IDF提升这些术语来查询索引.
是否可以将More Like This配置为这样?如果没有,在Solr中实施相关性反馈的最佳方式是什么?
不幸的是,无法以这种方式配置 MLT 处理程序。
一种方法是实现自定义SearchComponent并将其注册到(专用)SearchHadler。
我已经做过类似的事情,如果您查看MLT 组件的原始实现,这非常容易。
最困难的部分是不同分片服务器结果的同步,但如果不使用分片,可以跳过。
我还强烈建议在实现中使用您自己的参数,以防止与其他组件发生冲突。