最近一直在学Lucene3.5,感觉里面的知识真的很棒。今天就和大家一起分享一下我们自己来实现一个同义词的分词器。
一个分词器由多个Tokenizer和TokenFilter组成,这篇文章讲解的就是我们利用这两个特性实现自己的一个简单的同义词分词器,不妥之处请大家指出。
一、设计思路
什么叫同义词搜索呢?比如我们在搜 ”中国“ 这个词的时候,我们也可以搜索 ”大陆“ 这个词,后者搜索的要...
分类:
Web程序 时间:
2015-04-01 13:29:29
阅读次数:
300
Webkit中,有个词法分析器HTMLTokenizer,她是怎么工作的呢,网页字节流是她的输入,她的输出是一个个的词语Token,比如div,input,img,script等等HTML文件中的标准元素(Element)。...
分类:
其他好文 时间:
2015-03-20 14:30:26
阅读次数:
236
字段分析器(Analyzers)即用于文档索引也用于查询.一个分析器检查字段的文本,并生成一个token流.分析器可能是一个单独的类,也可能是一系列的tokenizer和filter的组合. 分词器把字段数据分解成词汇单元或者tokens,过滤器(filters)检查tokens流,并且保持它...
分类:
其他好文 时间:
2015-02-25 22:21:15
阅读次数:
231
这部分介绍了solr如何分解和处理文本数据的,它包含一下主题: Analyzers,Tokenizers,Filters概述:主要介绍Analyzers,Tokenizers,Filters的概念. 什么是Analyzer:solr Anayler的细节信息. 什么是Tokenizer:s...
分类:
其他好文 时间:
2015-02-25 21:02:17
阅读次数:
166
前一篇文章 lucene分词流程讲解了分词的一些流程,我们也对分词流程有了一个初步的了解,知道一个分词器由多个Tokenizer和TokenFilter组成,这篇文章讲解的就是我们利用这两个特性实现自己的一个简单的同义词分词器,不妥之处请大家指出
(一)分析
如何实现同义词呢?比如重庆可以叫做山城,我们搜索山城的时候也应该要搜索要包含重庆这个单词的文章。那么我们就必须要了解lucene只怎么处...
分类:
Web程序 时间:
2015-02-03 17:10:14
阅读次数:
226
tokenizer 库提供预定义好的四个分词对象,其中char_delimiters_separator已弃用. 其他如下:1. char_separatorchar_separator有两个构造函数1. char_separator()使用函数 std::isspace() 来识别被弃分隔符,同时...
分类:
其他好文 时间:
2015-01-31 00:02:21
阅读次数:
151
source:Tokenizer.prototype._stateInNamedEntity = function(c){
if(c === ";"){
this._parseNamedEntityStrict();
if(this._sectionStart + 1 < this._index && !this._x...
分类:
Web程序 时间:
2014-12-01 17:37:59
阅读次数:
164
自定义解析器(Custom Analyzers)
虽然ES本身已经提供了一些解析器,但是通过组合字符过滤器(Character Filter),分词器(Tokenizer)以及词条过滤器(Token Filter)来创建你自己的解析器才会显示出其威力。
在解析和解析器中,我们提到过解析器(Analyzer)就是将3种功能打包得到的,它会按照下面的顺序执行:
字符过滤器(Cha...
分类:
其他好文 时间:
2014-11-25 12:52:50
阅读次数:
247
在较复杂的lucene搜索业务场景下,直接网上下载一个作为项目的分词器,是不够的。那么怎么去评定一个中文分词器的好与差:一般来讲,有两个点;词库和搜索效率,也就是算法。
lucene的倒排列表中,不同的分词单元有不同的PositionIncrementAttribute,如果两个词有着相同位置属性,比如:我定义美国和中国这两个词在倒排列表中是同一个位置,那么搜索美国的话,中国也能出来。这就是同义词搜索原理。
以下代码(用mmseg的 Tokenizer 去切词之后,然后再做同义词):
先自定义...
分类:
Web程序 时间:
2014-11-19 18:47:09
阅读次数:
265
TokenStream: 分词器做好处理之后得到的一个流。这个流中存储了分词的各种信息,可以通过TokenStream有效的获取到分词单元。
以下是把文件流转换成分词流(TokenStream)的过程
首先,通过Tokenizer来进行分词,不同分词器有着不同的Tokenzier,Tokenzier分完词后,通过TokenFilter对已经分好词的数据进行过滤,比如停止词。过滤完之后,把所有的数据组合成一个TokenStream;...
分类:
Web程序 时间:
2014-11-17 22:56:37
阅读次数:
458