我使用solr创建了一个搜索引擎。我想创建一个查询,这样如果用户搜索单词“ college ”,那么文档的分数就会非常接近( famous “) 2个词,即“着名大学”或“大学是着名的”)应该更高。如果 famous 这个词不是非常接近,那么它应该只根据单词“ college ”计算得分。
我想要的是这样的 “着名大学”~2 ^ 10或“大学名校”~1 ^ 10或“大学”
如何在eDismax中实现这一目标?
答案 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。