美文网首页
在Solr中配置中文分词器word

在Solr中配置中文分词器word

作者: 尚亦汐 | 来源:发表于2016-08-10 13:33 被阅读0次

Solr是在schema.xml(managed-schema)中配置Analyzer。

注意:在Solr 6.1.0的conf文件夹下没有schema.xml这个文件,只有managed-schema,如果把managed-schema删掉,然后放schema.xml,那么运行时候会根据schema.xml生成managed-schema,如果这两个文件同时存在,则会只根据managed-schema的内容配置。

在没有配置word分词器之前,schema.xml里面默认用的是WhitespaceTokenizerFactory,就是根据空格来分词,对于中文来说则是将文本分为一个个单字,对一篇新闻分词后的结果如下:

下面配置word分词:

将schema.xml中的需要用到Word分词的fieldType中的:
<tokenizer class="solr.WhitespaceTokenizerFactory"/>

<tokenizer class="solr.StandardTokenizerFactory"/>
替换为:
<tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
并移除下面的filter标签.

如text_general类型:

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
    <analyzer type="index">
      <tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
    </analyzer>
  </fieldType>

将word-1.3.jar放到lib文件夹下,重启solr,可以看到分词效果如下:

另外,在conf文件夹下面发现有很多txt文件:

这是用来设置停止词,或者是同义词的。

例如在利用word分词后,查询“下跌”,得到结果如下:

查询“下跌”,找到一片文档

查询“下降”是没有结果的:

查询“下降”则没有匹配的文档

在synonyms.txt配置:
下降=>下跌
或者设置为:
下降,下跌
前者表示为将下降转换为下跌,后者表示这些词可以相互替换。

另外,还要记得在相应的fieldType加上对同义词的支持:

  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
    <analyzer type="index">
      <tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>  
    </analyzer>
    <analyzer type="query">
      <tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
    </analyzer>

重启solr之后再查询“下降”:

配置同义词转换后,查询“下降”则会返回跟“下跌”一样的结果

通过上面的例子可以看出,通过配置conf文件夹下面的文件,可以对solr进行很多个性化的设置,solr的功能还是很强大的。

word分词器:https://github.com/ysc/word

相关文章

网友评论

      本文标题:在Solr中配置中文分词器word

      本文链接:https://www.haomeiwen.com/subject/secjsttx.html