在Solr搜索结果中实现SVD算法的最简单方法是什么?

问题描述:

我在http://localhost:8983/solr上创建了自己的核心,并添加了一些文件以便查询。但是当我查询诸如“狗”之类的东西时,我希望那些包含“狗狗”的文档也会被返回。所以我想实现SVD算法来改进我的结果。 由于我是新来的搜索引擎的东西。我所知道的是,我可以使用Mahout来实现SVD,但似乎有点困难,因为我必须安装Maven,Hadoop和Mahout。 任何建议将不胜感激。在Solr搜索结果中实现SVD算法的最简单方法是什么?

您可以使用SynonymGraphFilterFactory

该过滤器映射单一或多令牌的同义词,产生完全正确的图形输出。此过滤器替代同义词过滤器,它会为多令牌同义词生成不正确的图。

如果您在索引过程中使用此过滤器,则必须使用平展图过滤器按照该过滤器将令牌压缩到另一个之上,如同义词过滤器。

创建即在目录your_collection/conf/mysynonyms.txt一个文件,并把同义词与=>标志

pooch,pup,fido => dog 
huge,ginormous,humungous => large 

而且示例模式将是:

<analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt"/> 
    <filter class="solr.FlattenGraphFilterFactory"/> <!-- required on index analyzers after graph filters --> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt"/> 
</analyzer> 

来源:https://cwiki.apache.org/confluence/display/solr/Filter+Descriptions

的是另一种用条款来增加索引的方法不在内容中。 @ashraful说同义词是好的。但也有其他2个问题,你会遇到:使用,但不能在同义词列表

  1. 行为搜索:使用其他用户行为以提示他们正在寻找

这些要求您使用从1)其他搜索学到的术语来扩充索引,以及2)用户行为。 Mahout的相关交叉事件算法可以帮助两者。您可以将其设置为查找导致人们阅读项目的条款以及与索引中的项目相关的转化项目(如果您拥有购买或其他偏好数据)。在第二种情况下,您可以将用户转化添加到搜索查询中以个性化结果。

对这里的技术的一个博客:http://actionml.com/blog/personalized_search 上亨利马乌文档这里的页面:http://mahout.apache.org/users/algorithms/intro-cooccurrence-spark.html

你也应该看看word2vec,这将(给定正确的训练数据)发现,“狗”和“狗”是同义词而不管同义词列表,因为它是从数据中学习的。我不知道如何将word2vec添加到Solr,但它已被整合到Lucid的闭源产品Fusion中。

+0

感谢您的建议!我对此完全陌生。但我的导师要求我实施SVD。我只是设置了maven,hadoop和mahout两天,但我失败了,遇到了大量的问题。除了mahout,我不知道其他实现SVD的方法,你知道吗? –