当前位置: 代码迷 >> ASP.NET >> lucene.net 分词搜索有关问题
  详细解决方案

lucene.net 分词搜索有关问题

热度:4006   发布时间:2013-02-25 00:00:00.0
lucene.net 分词搜索问题
我使用了lucene.net的内置分析器StandardAnalyzer,对于中文搜索没有任何问题,但是对英文和数字以及符号等搜索不是很理想
举个例子:12345-12,当我输入12345的时候是检索不到12345-12的,只有在输入12345-12的时候才能被检索到
不知怎么才能解决,在网上看了ChineseAnalyzer,不是内置的,不知道效果怎么样,希望哪位大侠能帮忙提供一个比较好的解决方法,倾囊相送100分

------解决方案--------------------------------------------------------
探讨
我使用了lucene.net的内置分析器StandardAnalyzer,对于中文搜索没有任何问题,但是对英文和数字以及符号等搜索不是很理想

------解决方案--------------------------------------------------------
默认情况下是针对非中文进行分词的。至于lz的问题,我无法回答,了解它不深。
------解决方案--------------------------------------------------------
中科的分词还可以,不过出现繁体中文时会出错,文章长度太长也出现错误。。C#的中科bug挺多

可以去搜索射日分词,还不错。。

今天刚从中科的分词转到射日。就是因为中科分繁体出错。
------解决方案--------------------------------------------------------
Analysis模块主要提供了文本解析的功能,输入为TextReader的字符流,最终解析成TokenStream形式的结果返回给调用端。Analysis主要为Index和QueryParser模块提供解析服务,分别是在Indexing原始文件和解析搜索语句中的Term的过程中。
定义了基类Analyzer, 子类SimpleAnalyzer(简单分析器,只分词),StopAnalyzer(定义了StopTable,过滤Noise Word)以及标准分析器StandardAnalyzer。

SimpleAnalyzer:功能强于WhitespaceAnalyzer,将除去letter之外的符号全部过滤掉,并且将所有的字lowcase化,不支持中文 
StopAnalyzer:StopAnalyzer的功能超越了SimpleAnalyzer,在SimpleAnalyzer的基础上
 增加了去除StopWords的功能,不支持中文 
StandardAnalyzer:英文的处理能力同于StopAnalyzer.支持中文采用的方法为单字切分. 
ChineseAnalyzer:来自于Lucene的sand box.性能类似于StandardAnalyzer,缺点是不支持中英文混和分词. 

------解决方案--------------------------------------------------------
探讨
在Lucene.net中有很多种分词器,不同分词器使用了不同的分词算法,有不同的分词效果,满足不同的需求!在这里主要是看看其中五中分词器用来对中文切词的效果。五中分词器分别为:StandardTokenizer,CJKTokenizer,ChinessTokenizer,LowerCaseTokenizer,WhitespaceTokenizer;


  相关解决方案