solr的同义词实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solr的同义词实现相关的知识,希望对你有一定的参考价值。

solr同义词的具体实现

1.修改分词器的jar包技术分享 并重新打包

   在org.wltea.analyzer.lucene包下新增IKTokenizerFactory 类

package org.wltea.analyzer.lucene;

import java.io.Reader;
import java.util.Map;

import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.util.TokenizerFactory;
import org.apache.lucene.util.AttributeFactory;

public class IKTokenizerFactory extends TokenizerFactory {
private final boolean useSmart;

public IKTokenizerFactory(Map<String, String> args) {
  super(args);
  this.useSmart = getBoolean(args, "useSmart", false);

}

@Override
public Tokenizer create(AttributeFactory factory, Reader in) {
  return new IKTokenizer(in, this.useSmart);
  }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.修改配置文件schema.xml

不需要同义词的配置

<!--增加分词器 -->
<fieldType name="text_ik" class="solr.TextField" >
  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

修改为同义词的配置

<fieldType name="text_ik" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
    <!-- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
  </analyzer>
  <analyzer type="query">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
  </analyzer>
</fieldType>

 

修改synonyms.txt文件加入需要的同义词

技术分享

 

如果同义词不生效,则需要下面的配置

在tomcat下的solr项目

技术分享

 

IKAnalyzer.cfg.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
  <comment>IK Analyzer 扩展配置</comment>
  <!--用户可以在这里配置自己的扩展字典 -->
  <entry key="ext_dict">ext.dic;</entry>
  <!--用户可以在这里配置自己的扩展停止词字典
  <entry key="ext_stopwords">stopword.dic;</entry>

   -->
</properties>

有些特殊的词语我们在使用的过程中不需要进行分词所以需要配置停词

停词配置文件ext.dic的配置不分词的词语

技术分享

 

最后的运行效果如下:

技术分享

 































以上是关于solr的同义词实现的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不重新启动 Solr 服务器的情况下动态更新同义词文件?

text 将WoneF数据库文件转换为Solr格式的同义词文件

IK分词器 整合solr4.7 含同义词切分词停止词

金沙数据-《艳遇SOLR(solr in action)》--2 千呼万唤始出来 犹抱琵琶半遮面

oracle 中怎么创建同义词?

lucene自定义同义词实现