zoukankan      html  css  js  c++  java
  • 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个汉字当作一个词来处理,感觉也不是很好。

  • 相关阅读:
    一个完整的SQL SERVER数据库全文索引的示例
    sqlhelper for access
    解决打开网站弹出下载文件
    18句话入门SQLServer XML
    c# winform 自动关闭messagebox 模拟回车
    jquery json
    用超级巡警批量清除被挂马的网页
    sqlhelper for sql
    SQL XML DML 数据修改
    post方法易错地方
  • 原文地址:https://www.cnblogs.com/guoyuanwei/p/2429887.html
Copyright © 2011-2022 走看看