当查询“来自约翰的电子邮件”匹配文本“具有来自约翰的电子邮件的其他文本”并且查询中的每个单词以这种确切格式存在于文本字段中时:
然后只有那时我才需要应用 bf 功能。
是否可以使用 Solr 实现此规则/功能?
谢谢,彼得
我想是的,你只需要在你的 solrconfig.xml 中创建一个新的请求处理程序来应用该函数:
<requestHandler name="/match" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">all</str>
<str name="defType">edismax</str>
<str name="rows">5</str>
<str name="fl">*,score</str>
<str name="bf">product(log(sum(popularity,1)),100)^20</str>
<str name="boost">product(map(query($type1query),0,0,1,$type1boost),map(query($type2query),0,0,1,$type2boost),map(query($type3query),0,0,1,$type3boost),map(query($type4query),0,0,1,$type4boost),$typeboost)</str>
<double name="typeboost">1.0</double>
<str name="type1query">type:"type1"</str>
<double name="type1boost">0.9</double>
<str name="type2query">type:"type2"</str>
<double name="type2boost">0.5</double>
<str name="type3query">type:"type3"</str>
<double name="type3boost">0.3</double>
<str name="type4query">type:"type4"</str>
<double name="type4boost">0.1</double>
<str name="debugQuery">false</str>
<str name="omitHeader">true</str>
<str name="wt">json</str>
<str name="indent">true</str>
</lst>
并构建一个只匹配这些词的查询,例如:
http://localhost:8983/solr/collection1/match?q=*email from john