现在的位置: 首页 > 搜索技术 > 正文

利用Lucene.net搭建站内分词技术

2020年01月09日 搜索技术 ⁄ 共 1233字 ⁄ 字号 评论关闭

  在搜索引擎技术中,分词对于影响搜索引擎结果排序有着至关重要的作用。与英文不同的是,中文之间没有空格,并且由于中国文字的博大精深,常常一句话可以分出很多不同效果的词汇,这里就不做举例了,想必大家都有所体会。所以对于一个中文搜索引擎来说,中文分词技术是十分重要的,也是十分讲究的。

  在搜索引擎运行的机制中,有很多种中文分词的办法,例如正向最大匹配分词,逆向最大分析,基于统计的分词,基于词库的分词等。但是在实际的搜索引擎运行过程中,分词的办法却没有这么简单了。因为搜索引擎不仅仅要去考虑到分词结果的正确性,还需要考虑到对于分不出来的词的处理。

  所以能写出一个好的分词算法是很不容易的,由于水平有限,这里主要介绍下Lucene.net和网上几个分词方法。大家有更好的分词方法还望分享!

  这里不对每一个类做详细的讲解了,感兴趣的朋友可以到网上下载源码研究下,这里说说这里比较主要的东西。

Analyzer

  它叫分析器,也可以叫分词器。分析(Analysis),在Lucene当中指的是将域(Field)文本转换为最基本的索引表示单元——项(Term)的过程。在搜索过程中,这些项用于决定什么样的文档能匹配查询条件。分析器(Analyzer)对分析操作进行了封装。分析器通过执行若干操作,将文本语汇单元化,这些操作可能包括提取单词、去除标点符号、去掉语汇单元上的音调符号、将字母转换为小写(也称为规格化)、移除常用词、将单词转换为词干形式(词干还原),或者将单词转换为基本形(lemmatization)等。这个过程也称为语汇单元化过程(tokenization),而从文本流中得到的文本块称为语汇单元(tokens)。各语汇单元与关联的域(Field)名相结合就形成了各个项(Term)。

  分析操作发生在两个阶段:建立索引以及使用QueryParser对象时。

TokenStream

  TokenStream有两个不同的子类:Tokenizer和TokenFilter。

  Tokenizer是TokenStream的子类,它将Reader对象中的数据切分成语汇单元。当你索引Field.Text(String,String)域或者Field.UnStored(String,String)域(即被索引域的构造函数接受一个String对象作为其参数时)中的String对象时,Lucene会将构造函数中的String对象包装在StringReader中,以便进行语汇单元的切分。

  TokenStream类的第二个子类——TokenFilter,允许你将多个TokenStream对象连接在一起。这个强大机制使它成为了一个名副其实的流过滤器。一个TokenStream对象被传递到TokenFilter中,并在传递过程中,由过滤器对其进行添加、删除或者更改等操作。

  结束语:以上就是关于利用Lucene.net搭建站内分词技术的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.