• solr学习之六--------Analyzer(分析器)、Tokenizer(分词器)


    首先,不知道大家在前面的例子中没有试着搜索文本串,就是在第二节,我们添加了很多文档。如果字段值是一个文本。你如果只搜索这个字段的某个单词,是不是发现搜不到?

    这就是因为我们没有配置Analyzer,因此在搜索的时候会“全匹配”。可以从直观感觉上理解为SQL的  like和= 的区别。

    通过前面这段引文,我们就能知道:Analyzer就是分析我们的文本的。

    一般来说:solr.TextField类型的字段才需要分析器。

    最简单的配置分析器的如下:

    1.  
      <fieldType name="nametext" class="solr.TextField">
    2.  
      <analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"/>
    3.  
      </fieldType>

    其实分析器(Analyzer)还可以包括一个分词器(Tokenizer)和多个过滤器(filter),这2个东西,是为了实现更复杂的场景,我们后续再讲。

    分析器一般出现在2个环境:建索引(index)和查询(query),大多数情况下这2个场景的分析过程都是一样,也就是说用的是相同的分析器。但是,你仍然可以为2个不同的阶段指字不同的分析器:

    1.  
      <fieldType name="nametext" class="solr.TextField">
    2.  
      <analyzer type="index">
    3.  
      <tokenizer class="solr.StandardTokenizerFactory"/>
    4.  
      <filter class="solr.LowerCaseFilterFactory"/>
    5.  
      <filter class="solr.KeepWordFilterFactory" words="keepwords.txt"/>
    6.  
      <filter class="solr.SynonymFilterFactory" synonyms="syns.txt"/>
    7.  
      </analyzer>
    8.  
      <analyzer type="query">
    9.  
      <tokenizer class="solr.StandardTokenizerFactory"/>
    10.  
      <filter class="solr.LowerCaseFilterFactory"/>
    11.  
      </analyzer>
    12.  
      </fieldType>

    同过 type来指阶段。

    Tokenizer:

      分词器,从字面意思都可以理解,就是将句子拆成一个个的词(或者是词组),比如A B C D,可以拆成A,B,C,D4个单独的单词,也有可能拆成AB,CD  或者其它。。。。 这个就看你分词规则了。

      使用如下:

    1.  
      <fieldType name="text" class="solr.TextField">
    2.  
      <analyzer>
    3.  
      <tokenizer class="solr.StandardTokenizerFactory"/>
    4.  
      </analyzer>
    5.  
      </fieldType>

    值 得注意的是:这里配的class是Factory,而不是真正的分词器,他是通过工厂类来创建分词器实例的。所有的工厂类,必须实现org.apache.solr.analysis.TokenizerFactory

    工厂的产出物,也必须派生至:org.apache.lucene.analysis.TokenStream

    Filter:

       就是经过Tokenizer分词之后,再再行的继续处理,比如全转成小写,时态处理, 去掉语气词等。。。

  • 相关阅读:
    POJ 1681 Painter's Problem(高斯消元法)
    HDU 3530 Subsequence(单调队列)
    HDU 4302 Holedox Eating(优先队列或者线段树)
    POJ 2947 Widget Factory(高斯消元法,解模线性方程组)
    HDU 3635 Dragon Balls(并查集)
    HDU 4301 Divide Chocolate(找规律,DP)
    POJ 1753 Flip Game(高斯消元)
    POJ 3185 The Water Bowls(高斯消元)
    克琳:http://liyu.eu5.org
    WinDbg使用
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9335820.html
Copyright © 2020-2023  润新知