使用eDismax进行接近搜索

时间:2013-12-02 09:10:13

标签: solr lucene solr4 edismax dismax

我使用solr创建了一个搜索引擎。我想创建一个查询,这样如果用户搜索单词“ college ”,那么文档的分数就会非常接近( famous “) 2个词,即“着名大学”或“大学是着名的”)应该更高。如果 famous 这个词不是非常接近,那么它应该只根据单词“ college ”计算得分。

我想要的是这样的 “着名大学”~2 ^ 10或“大学名校”~1 ^ 10或“大学”

如何在eDismax中实现这一目标?

1 个答案:

答案 0 :(得分:0)

您正在寻找的是一个短语搜索,其短语为2。例如,solrconfig.xml中的设置默认值可能如下所示:

  <requestHandler name="/phraseSearch" class="solr.SearchHandler">
    <lst name="defaults">
        <str name="defType">edismax</str>
        <str name="wt">xml</str>
        <str name="fl">Title</str>
        <str name="qf">Name^2 Description</str> <!-- The fields (and their weightings) to search in.-->
        <str name="rows">500</str>
        <str name="pf">Name^4 Description^2</str> <!-- Phrase field (and their weightings). Fields to search for closely located matches -->
        <str name="ps">2</str> <!-- Phrase slop. How many tokens apart must words be to be able to qualify as a phrase-->
     </lst>
  </requestHandler>

在查询中控制短语搜索可能如下所示:

http://mySolrHost:8983/solr/myEDismaxQuery?q=Title:famous+college&defType=edismax&pf=Title&ps=2

有关使用eDismax的词组查询的更多信息,请参阅Solr Reference page for eDismax