0

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

我想要的是这样的“著名大学”~2^10 OR “college Famous”~1^10 OR “college”

如何在 eDismax 中实现这一点?

4

1 回答 1

0

您要查找的内容称为短语搜索,其短语 slop 为 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 进行短语查询的更多信息,请参见 eDismax 的Solr 参考页面

于 2013-12-02T10:23:36.350 回答