我是Solr的新手。请帮我解决以下问题:
请求处理程序和查询解析器之间有什么区别? 我在想,当在solr中通过URL发送查询时,首先使用Query解析器解析查询。请求处理程序然后获取解析的查询并根据请求处理程序参数搜索并显示响应。这是正确的吗?
Solr中的默认查询解析器和默认请求处理程序是什么?
参数deftype用于为请求处理程序指定解析器和qt吗?
我写了这个查询
select?q=features:power%20features:latency&deftype=dismax
哪个有效,但select?q=features:power%20features:latency&qt=dismax
没有。
这是我的requestHandler
<requestHandler name="dismax" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">dismax< /str>
<str name="echoParams">explicit< /str>
<float name="tie">0.01< /float>
<str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4< /str>
<str name="pf">text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9< /str>
<str name="bf">popularity^0.5 recip(price,1,1000,1000)^0.3< /str>
<str name="fl">id,name,price,score< /str>
<str name="mm">2<-1 5<-2 6<90%< /str>
<int name="ps">100< /int>
<str name="q.alt">*:*< /str>
<!-- example highlighter config, enable per-query with hl=true
-- >
< str name="hl.fl">text features name</str>
<!-- for this field, we want no fragmenting, just highlighting
-- >
< str name="f.name.hl.fragsize">0< /str>
<!-- instructs Solr to return the field itself if no query terms are
found
-- >
<str name="f.name.hl.alternateField">name< /str>
<str name="f.text.hl.fragmenter">regex< /str>
<!-- defined below
-->
< /lst>
</requestHandler>
答案 0 :(得分:3)
默认请求处理程序是SolrConfig.xml中的default =“true”参数(SearchHandler,如果你没有改变它)。
请求处理程序处理请求,因此它是每个请求的起点,这意味着请求处理程序使用/调用查询解析器(由url或默认值指定的解析器)作为其第一步。
你想得到:
1.具有“电源延迟”的文件作为短语?
2.或者在文档中的任何地方使用这两个术语的文档?
3.或者使用这两个术语的文档?
试试这样:
1.选择?q =功能:“功率延迟”&amp; qt = dismax
2.选择?q =特征:功率+特征:延迟&amp; qt = dismax&amp; mm = 2
3.选择?q =功能:功率+功能:延迟&amp; qt = dismax&amp; mm = 1
有关DisMaxQParserPlugin的更多信息。