lucene如体做中英文分词搜索


我原本是做中文搜索的,一段字符里面比如说:我是中国人,I am chinese 12344,在这个字符里面,中文和数据都能匹配搜索到,但是 I am chinese搜索不到结果,英文没能分词,我用的是je-analyzer2.4.0分词器。
实现方法如下:
建索引端:
IndexWriter diskWriter = new IndexWriter(diskDir, new StandardAnalyzer(), false);
搜索端:
Analyzer analyzer = new StandardAnalyzer(); //分词器
//把要搜索的文本解析Query
String[] fields = {"name","card_id"};
QueryParser queryParser = new MultiFieldQueryParser(fields,analyzer);

搜索结果:
输入“中”,返回如下结果

中文结果

输入"china",返回如下结果

英文搜索

返回无结果,就是说英文不能匹配到,是分词器的问题吗?

lucene java

月亮上的小萝莉 12 years, 8 months ago

居我所知,lucene现在所有的分词器,Ikanylay并不能提供单个英文的搜索功能,如果你要实现这个功能的话,必须得自己写分词器,要不你就换用sphinx,它有自己的分词,而且他不是商业的,而lucene是商业的,因此开源的东西并非那么完美,这套东西要自己写。

dongt answered 12 years, 8 months ago

Your Answer