Solr检索配置

来源:互联网 发布:3b代码编程及图案 编辑:程序博客网 时间:2024/05/01 04:36

使用Solr做全文检索的时候,需要接触到solr的配置文件(Schema.xml/Managed-schema.xml)

1.设置中文分词器(Ik)

1)将ik-analyzer-solr5-5.x.jar 放到solr-6.2.1\server\solr-webapp\webapp\WEB-INF\lib。2)把ik的配置文件IKAnalyzer.cfg.xml,mydict.dic,stopword.dic也放置到:solr-6.2.1\server\solr-webapp\webapp\WEB-INF\classes中,没有classes文件夹的话需要新建一个。3)在schema.xml或managed-schema.xml文件中添加以下节点:<fieldType name="text_ik" class="solr.TextField">        <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>      <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>    </fieldType> <field name="content" type="text_ik" indexed="true" stored="true"  multiValued="false" /> 先是配置一个名为text_ik的字段类型,指定为IK分词器的class。然后新建一个字段,指定其类型为text_ik。利用该字段检索的时候就是IK的中文分词检索了。

2.设置建立索引的字段配置fileld节点

索引字段在建立索引和搜索索引中起着一个名称的作用。<field name="file_name" type="text_ik" indexed="true" stored="true"  required="false" multiValued="false" /> 通过在Schema.xml/Managed-schema.xml配置文件中添加上面的结点就意味着声明了一个名为file_name的索引字段,类型为IK分词。

3.设置综合搜索copyFiled节点

大多时候我们搜索索引都是多字段来综合查询的在Schema.xml/Managed-schema.xml中将需要检索的字段,使用copyField拷贝到一个新的searchText的field中,并设置这个searchText field的multivalue属性为true即可。<fields>           <field name="file_name" type="text_ik" indexed="true" stored="true" required="true" />           <field name="file_content" type="text_ik" indexed="true" stored="true" />           <field name="file_keywords" type="text_ik" indexed="true" stored="false" multiValued="true" />       </fields>       <!--使用copyField标签来设置综合查询的字段-->     <copyField source="name" dest="file_keywords" />       <copyField source="summary" dest="file_keywords" />      <!-- 以下可选 -->     <uniqueKey>id</uniqueKey>       <defaultSearchField>file_keywords</defaultSearchField>       <solrQueryParser defaultOperator="AND" />  在solrconfig.xml中可设置检索的时候,哪个field占的权重多一点<requestHandler name="dismax" class="solr.SearchHandler">    <lst name="defaults">        <str name="defType">edismax</str>        <str name="echoParams">explicit</str>        <float name="tie">0.1</float>        <!--        <str name="bf">scoreParser(type)</str>        -->        <!--pf: 可提供对一条记录的多个字段做匹配的功能         qf: 针对查询的每个字段设置不同的boost权重打分,其设置的字段      必须为在pf中配置的项。-->        <str name="pf">            file_name^100 file_content^50 file_path^20        </str>        <str name="qf">            file_name^10 file_content^ file_path^2        </str></requestHandler>

4.高亮显示设置

注意:需要高亮显示的字段,必须在其field节点设置stored="true"属性        使用SolrJ的solrQuery类提供的方法进行高亮显示的设置//        query.setHighlight(true); // 开启高亮组件或query.setParam("hl", "true");          query.setParam("hl", "true");//        query.addHighlightField("NAME");// 高亮字段 可设置多个        query.setParam("hl.q", searchText);        query.setParam("hl.fl", "NAME");        query.setHighlightSimplePre("<font color='red'>");//标记,高亮关键字前缀          query.setHighlightSimplePost("</font>");//后缀          query.setHighlightSnippets(3);//结果分片数,默认为1          query.setHighlightFragsize(1000);//每个分片的最大长度,默认为100 光使用这个的时候,我遇到一个问题就是无高亮显示,后来将需要高亮显示的字段在manage-schema中指定的field中的属性store设置为true后,成功将指定字段高亮显示,另外还要注意一点,要对指定字段进行高亮显示的时候,此字段必须在查询条件中存在,比如:query.setQuery("NAME:123 OR NAME:12 OR ABC:ABC");这样便可高亮显示该字段

5.建立文件索引

原创粉丝点击