Lucene无法搜索数字、字母

问题描述:

被索引的文本:luxu001207的博客


当输入关键词l001或0012时,返回结果为0


当输入关键词001207可正确返回结果


为什么会出现这种情况呢?

因为Lucene对数字、字母的索引是按“单词”的概念来进行索引的,连续的字母、数字、下划线、中横线,Lucene将之当做一个单词进行索引,因此搜索的时候必须输入整个单词才能正确返回结果。


那么,如果需要输入001即可返回包含001207、0012564等的结果时,我们可以在创建索引的时候对所有数字、英文单词进行处理(注意:luxu-001207等字串Lucene也是当做一个单词处理,而不会自动分为luxu-001207、luxu、001207)。


至于具体的处理方式,根据不同的需求会有不同的处理方法,这里就不细表了。


简单的处理(比如自动将如luxu-001207等包含中横杠、下划线的单词拆分),可以考虑直接使用Replace实现


string input="luxu-001207的博客";
input = Regex.Replace(input, @"([a-zA-Z\d]*)(_-)([a-zA-Z\d]*)", "$1$2$3 $1 $3", RegexOptions.Compiled | RegexOptions.Singleline);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值