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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
对于 Solr 的身份认证配置,您可以按照以下步骤进行设置: 1. 启用 Solr 的身份认证:在 Solr 的安装目录中,打开 `solr.in.sh`(Linux/MacOS)或 `solr.in.cmd`(Windows)文件,并找到以下行: ``` # SOLR_AUTHENTICATION_OPTS= ``` 取消注释并设置该行为: ``` SOLR_AUTHENTICATION_OPTS="-Dbasicauth=solr:password123" ``` 其中 "solr" 是用户名,"password123" 是密码。 2. 创建授权用户:在 Solr 的安装目录中执行以下命令以创建授权用户: ``` bin/solr create_user -c <core_name> -p <password> ``` `<core_name>` 是您的 Solr 核心名称,`<password>` 是用户的密码。 3. 配置授权规则:打开 Solr 的 `solr.xml` 配置文件,并在 `<security>` 标签内添加以下内容: ```xml <authentication class="solr.BasicAuthPlugin"> <str name="credentials">solr:password123</str> <str name="realm">Solr Basic Authentication</str> </authentication> <authorization class="solr.RuleBasedAuthorizationPlugin"> <params> <!-- 添加授权规则 --> </params> </authorization> ``` 4. 配置访问控制规则:在 `<authorization>` 标签下添加适当的规则以控制用户的访问权限。例如,可以使用如下规则允许用户具有完全访问权限: ```xml <rule name="allow_all" role="solr-admin"> <user username="solr"/> </rule> ``` 您可以根据需要添加其他规则。 5. 重启 Solr:完成上述配置后,重新启动 Solr 服务以使身份认证生效。 请注意,在配置身份认证之前,建议先进行备份并确保对 Solr 实例有适当的访问权限。此外,也可以使用其他可用的身份认证插件,如 LDAP 或 Kerberos。详细信息可以参考 Solr 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值