• lucene.net学习七——分词


    分词的重要性对于一个搜索引擎来说是相当重要的,英文的分词相对简单,因为英文的每个单词都具有天然的分隔符,但当遇到中文时,就显得无能为力了。

    中文是世界上最复杂的语言之一,不同的字在不同的词语中可能代表不同的意思,一句话的意思不能简简单单的看汉字的意思,还有结合上下文语境,因此要让计算机理解中文是比较困难的。

    前面学习的所有例子中都提到了分词,都用的是lucene.net自带的标准分析器。代码如:

    //构造一个多Field查询
    Query query = MultiFieldQueryParser.Parse(Lucene.Net.Util.Version.LUCENE_29, "郭靖", fields, clauses,
    new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));

    这个标准的分析器,实际上进行的是单字分割,对于一个建好的索引,用NLuke打开,如下图:

    原始数据源中有文件名:吸星大法、郭靖和乔峰、独孤九剑这三个文件名,对文件名建索引后,发现都被切割成一个个汉字了,而且像‘和’这样的汉字是没有多大意义的,可以去掉。

    可见,lucene自带的标准分词不够合理。

    lucene也实现了一个二分法算法的中文分词CJKAnalyzer,这个类所在的程序集为:Lucene.Net.Contrib.Analyzers.dll,命名空间是:Lucene.Net.Analysis.CJK;

    修改代码:

        Analyzer analyzer = new CJKAnalyzer();

    在建立索引后,用NLuke查看分词的情况,如下图:

    发现此分词算法,把2个汉字当作一个词来处理,感觉也不是很好。

  • 相关阅读:
    free
    Lynyrd Skynyrd
    Tree 园丁的烦恼
    On Changing Tree
    Path Queries
    Java开发中的23种设计模式详解(转)
    cas单点登录实现
    Java内存溢出详解
    java多线程并发
    java代码实现图片处理功能。对图片质量进行压缩。
  • 原文地址:https://www.cnblogs.com/guoyuanwei/p/2429887.html
Copyright © 2020-2023  润新知