solr配置同义词、专有词的注意点

基于solr 6.5.0 版本

1. Solr配置同义词报异常

报错信息

xxx: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: 
Could not load conf for core xxx: Can't load schema /www/solrhome/xxx/conf
/managed-schema: java.nio.charset.MalformedInputException: Input length = 1

在这里插入图片描述


解决

在报该异常之前,对solr进行了同义词的配置,根据该异常信息,觉得可能是中文配置的问题,因为在conf/synonyms.txt文件中做了如下中文配置:


在这里插入图片描述


查询相关文档,发现可能是synonyms.txt文件的编码格式不是UTF-8导致的,使用notepad++工具查看该文件的编码格式:

在这里插入图片描述

接下来通过notepad工具将该文件的编码格式改为 UTF-8并保存,放进conf文件夹替换原有的synonyms.txt文件,重启tomcat,异常解决

注意: 这里要注意synonyms.txt文件不要直接打开编辑

2. Solr配置同义词无效

在[solr-core]/conf/managed-schema 文件做如下配置,synonyms负责配置同义词

	<fieldType name="text_ik" class="solr.TextField">
        <analyzer type="index">
            <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
			<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
			<charFilter class="solr.HTMLStripCharFilterFactory" /> 
        </analyzer>
    </fieldType>

在synonyms.txt文件里做了如下配置:

有关 => 关于
土增,土增税,土地增值税

看下效果,发现并没有搜出同义词,这是为什么呢?会不会是同义词被分词所导致的,试着将同义词配置到专有词里

在这里插入图片描述

在专有词的文件ext.dic 存入专有词

土增
土增税
土地增值税

这时同义词就能被搜出来了

在这里插入图片描述

3. solr配置高亮词、摘要的长度

solr配置高亮词,可通过solrJ库进行获取


	SolrQuery solrQuery = new SolrQuery();
	solrQuery.setQuery("keydown:" + keyword)  //搜索的关键词
			.setRows(sp.getPageSize())    	 //页数
			.setStart(sp.getStartNum())      //页码
			.setHighlightFragsize(120)       //高亮摘要句子的长度
			.addSort("score",ORDER.desc)     //排序
			.addSort("issueDate", ORDER.desc)
			.addSort("type",ORDER.asc)
			.addHighlightField(wenhao)		//需要设置高亮的字段
			.addHighlightField(name)
			.addHighlightField(content)
			.setHighlightSimplePre("<span style=\"color:red\">")  //配置高亮的前缀
			.setHighlightSimplePost("</span>");					  //配置高亮的后缀

也可以通过solr目录下的/conf/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>
Apache Solr 是一个开源的搜索服务器,Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。定制 Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一 个描述所有 Field 及其内容的 XML 文档就可以了。定制搜索的时候只需要发送 HTTP GET 请求 即可,然后对 Solr 返回的信息进行重新布局,以产生利于用户理解的页面内容布局。Solr 1.3 版 本开始支持从数据库(通过 JDBC)、 RSS 提要、 Web 页面和文件中导入数据,但是不直接支持从 二进制文件格式中提取内容,比如 MS Office、Adobe PDF 或其他专有格式。 更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。 通过对 Solr 进行适当的配置, 某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此 外,很多 Lucene 工具(如 Nutch、 Luke)也可以使用 Solr 创建的索引 Solr 的特性包括:  高级的全文搜索功能  专为高通量的网络流量进行的优化  基于开放接口(XML 和 HTTP)的标准  综合的 HTML 管理界面  可伸缩性-能够有效地复制到另外一个 Solr 搜索服务器  使用 XML 配置达到灵活性和适配性  可扩展的插件体系 1.2.1 Solr使用Lucene并且进行了扩展  一个真正的拥有动态域(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema)  对 Lucene 查询语言的强大扩展!  支持对结果进行动态的分组和过滤  高级的,可配置的文本分析  高度可配置和可扩展的缓存机制 5/8/2011 Page 4 5/8/20112009-02-17 版权所有,侵权必究All rights reserved 第4页,共56页Page 4 , Total56  性能优化  支持通过 XML 进行外部配置  拥有一个管理界面  可监控的日志  支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution) 1.2.2 Schema(模式)  定义域类型和文档的域  能够驱动智能处理  声明式的 Lucene 分析器规范  动态域能够随时增加域  拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域  显式类型能够减少对域类型的猜测  能够使用外部的基于文件的终止列表,同义词列表和保护列表的配置 1.2.3 查询  拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的 HTTP 接口  高亮的上下文搜索结果  基于域值和显式查询的片段式搜索(Faceted Search)  对查询语言增加了排序规范  常量的打分范围(Constant scoring range)和前缀式查询-没有 idf,coord,或者 lengthNorm 因子,对查询匹配的没有数量限制  函数查询(Function Query)-通过关于一个域的数值或顺序的函数对打分进行影响  性能优化 1.2.4 核心  可插拔的查询句柄(Query Handler)和可扩展的 XML 数据格式  使用唯一键的域能够增强文档唯一性  能够高效地进行批量更新和删除  用户可配置的文档索引变化触发器(命令)  并发控制的搜索器  能够正确处理数字类型,从而能够进行排序和范围搜索  能够控制缺失排序域的文档  支持搜索结果的动态分组 1.2.5 缓存  可配置的查询结果,过滤器,和文档缓存实例  可插拔的缓存实现  后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢 下来,当热启时,当前搜索器处理目前的请求(???)。  后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引 器和搜索器变化的时候高速缓存常查询的结果 5/8/2011 Page 5 5/8/20112009-02-17 版权所有,侵权必究All rights reserved 第5页,共56页Page 5 , Total56  快速和小的过滤器实现  支持自动热启的用户级别的缓存 1.2.6 复制  能够将使用 rsync 传输时改变的索引部分有效的发布  使用拉策略(Pull Strategy)来简化增加搜索器  可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择 1.2.7 管理接口  能够对缓存使用,更新和查询进行综合统计  文本
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页