Java-lucene如体做中英文分词搜索

意见反馈 意见反馈 主题:991 回复:2082

Java-lucene如体做中英文分词搜索

泛泛之交 发布于 2017-06-24 字数 880 浏览 1141 回复 2

我原本是做中文搜索的,一段字符里面比如说:我是中国人,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",返回如下结果

英文搜索

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

灵芸 2017-09-02 2 楼

是分词器的分词规则导致的,是没有建立I am chinese的索引,你搜索单个字母应该是能搜索到,例如:搜索I或者c。

泛泛之交 2017-07-05 1 楼

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