接下来,QParser的plugin只需要使用上面实现SimpleQParser,非常容易,如下所示:
- package org.shirdrn.solr.search;
- import org.apache.solr.common.params.SolrParams;
- import org.apache.solr.common.util.NamedList;
- import org.apache.solr.request.SolrQueryRequest;
- import org.apache.solr.search.QParser;
- import org.apache.solr.search.QParserPlugin;
- /**
- *
- * Simple query parser plugin.
- * e.g. search "Tokyo AND food"
- *
- * @author shirdrn
- * @date 2011-11-03
- */
- public class SimpleQParserPlugin extends QParserPlugin {
- @SuppressWarnings("rawtypes")
- @Override
- public void init(NamedList args) {
- }
- @Override
- public QParser createParser(String qstr, SolrParams localParams,
- SolrParams params, SolrQueryRequest req) {
- return new SimpleQParser(qstr, localParams,params, req);
- }
- }
- <queryParser name="simple" class="org.shirdrn.solr.search.SimpleQParserPlugin" />
- <requestHandler name="/simple" class="solr.SearchHandler">
- <lst name="defaults">
- <str name="defType">simple</str>
- <str name="qf">title^1.5 content</str>
- <str name="bf">recip(ms(NOW,publishDate),3.16e-13,1,1)^1.68</str>
- <str name="mainBoost">1.555</str>
- <str name="frontBoost">1.333</str>
- <str name="rearBoost">1.222</str>
- <str name="fl">*,score</str>
- <str name="qt">standard</str>
- <str name="wt">standard</str>
- <str name="version">2.2</str>
- <str name="echoParams">explicit</str>
- <bool name="hl">true</bool>
- <str name="hl.fl">title content</str>
- <int name="hl.snippets">3</int>
- <str name="indent">true</str>
- <str name="debugQuery">on</str>
- <str name="explainOther">on</str>
- </lst>
- </requestHandler>
- http://192.168.0.181:8080/solr/core/simple/?q=北京OR北平OR首都OR京城OR京都AND首都博物馆OR首博&start=0&rows=10
就能达到我们的目的,搜索结果的xml格式响应,如下所示:
- <result name="response" numFound="710" start="0" maxScore="2.5198267">
- ... ...
- <lst name="debug">
- <str name="rawquerystring">北京OR北平OR首都OR京城OR京都AND首都博物馆OR首博</str>
- <str name="querystring">北京OR北平OR首都OR京城OR京都AND首都博物馆OR首博</str>
- <str name="parsedquery">
- +((+((content:北京 title:北京^1.5 content:北平 title:北平^1.5 content:首都 title:首都^1.5 content:京城 title:京城^1.5 content:京都 title:京都^1.5)^1.333) +((content:首都博物馆 title:首都博物馆^1.5 content:首博 title:首博^1.5)^1.222))^1.555) FunctionQuery(1.0/(3.16E-13*float(ms(const(1320330543420),date(publishDate)))+1.0))
- </str>
- <str name="parsedquery_toString">
- +((+((content:北京 title:北京^1.5 content:北平 title:北平^1.5 content:首都 title:首都^1.5 content:京城 title:京城^1.5 content:京都 title:京都^1.5)^1.333) +((content:首都博物馆 title:首都博物馆^1.5 content:首博 title:首博^1.5)^1.222))^1.555) 1.0/(3.16E-13*float(ms(const(1320330543420),date(publishDate)))+1.0)
- </str>
