用的ik分词器
所在core的solrconfig.xml部分配置
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="defType">edismax</str>
<str name="qf">name^20 descripe^2 text ^2</str>
<str name="hl.usePhraseHighlighter">false</str>
<str name="hl.useFastVectorHighlighter">true</str>
<str name="hl.boundaryScanner">breakIterator</str>
<str name="hl.encoder">html</str>
<str name="hl.formatter">htmla</str>
</lst>
</requestHandler>
<searchComponent class="solr.HighlightComponent" name="highlight">
<highlighting>
<formatter name="htmla" default="true" class="solr.highlight.HtmlFormatter">
<lst name="defaults">
<str name="hl.simple.pre"><![CDATA[<b>]]></str>
<str name="hl.simple.post"><![CDATA[</b>]]></str>
</lst>
</formatter>
<encoder name="html" class="solr.highlight.HtmlEncoder" />
<boundaryScanner name="default" default="false" class="solr.highlight.SimpleBoundaryScanner">
<lst name="defaults">
<str name="hl.bs.maxScan">10</str>
<str name="hl.bs.chars">.,!? </str>
</lst>
</boundaryScanner>
<boundaryScanner name="breakIterator" default="true" class="solr.highlight.BreakIteratorBoundaryScanner">
<lst name="defaults">
<str name="hl.bs.type">SENTENCE</str>
</lst>
</boundaryScanner>
</highlighting>
</searchComponent>
所在core的schema.xml部分配置
<field name="text" type="text_ik" indexed="true" stored="true" omitNorms="true" termVectors="true" termPositions="true" termOffsets="true"/>
<field name="name" type="text_ik" indexed="true" stored="true" omitNorms="true" termVectors="true" termPositions="true" termOffsets="true"/>
<field name="descripe" type="text_ik" indexed="true" stored="true" omitNorms="true" termVectors="true" termPositions="true" termOffsets="true"/>
用solrquery查询 版本是5.4.1
StringBuilder params = new StringBuilder();
params.append("name:测试 OR descripe:测试 OR text:测试");
SolrQuery sq = new SolrQuery();
sq.setHighlight(true);
sq.setQuery(params.toString());
sq.set("defType","dismax");
sq.setStart(1);
sq.setRows(20);//每一页多少值
sq.setHighlightFragsize(20);//分片大小
sq.setHighlightSnippets(1);
sq.setRequestHandler("/select");
sq.set("fl", "*,score");
sq.addSort(new SortClause("score", ORDER.desc)); // 排序
HttpSolrClient hsc = new HttpSolrClient("http://地址:端口/solr/bookCore");
几个关键点
hl.usePhraseHighlighter
hl.useFastVectorHighlighter
<str name="defType">edismax</str>
<str name="qf">name^20 descripe^2 text ^2</str>(^后面是分值)
<str name="hl.boundaryScanner">breakIterator</str>
这个参数的意思,网上有很多,这里就不介绍了