[lucene] 相似度的问题

mniz 2010-04-14
不知道大家这样的问题是怎么解决的?
问题:有这样一种情况,有一条记录上面的描叙有:“深口”这个词。
如果用户输入 “深口鞋” 这样该采用那种查询方法要好些,我自己测试了几种 ,但效果都不怎么好
如果:模糊搜索 模糊搜索的话,如果用户输入的中间有一个空格的话,那就不能查询出来  如“深口 鞋”这样就不能查询出来
通配符搜索效果也不加

我是这样想的,把用户输入的词给切词,然后在根据切出来的词(一个集合)先找交集,然后在找并集,最后通通放到set 里面去

但是这样的情况,我必须的查询两次,查询两次而且展示出来的结果也是两种,这样效果太差了

所以想问下,大家如何判断用户输入的关键字哪个是比较重要的 ,还是直接根据用户输入的关键词来查询?
yangfuchao418 2010-04-14
可以设置坡度
mniz 2010-04-14
yangfuchao418 写道
可以设置坡度

怎么弄,能详细点么
lzj0470 2010-04-17
用户输入深口 鞋,你可以在后台处理成深口鞋不就行了。在运用模糊搜索
silj_java 2010-04-19
用LUCENE
wgdwyh 2010-04-28
mniz 写道
不知道大家这样的问题是怎么解决的?
问题:有这样一种情况,有一条记录上面的描叙有:“深口”这个词。
如果用户输入 “深口鞋” 这样该采用那种查询方法要好些,我自己测试了几种 ,但效果都不怎么好
如果:模糊搜索 模糊搜索的话,如果用户输入的中间有一个空格的话,那就不能查询出来  如“深口 鞋”这样就不能查询出来
通配符搜索效果也不加

我是这样想的,把用户输入的词给切词,然后在根据切出来的词(一个集合)先找交集,然后在找并集,最后通通放到set 里面去

但是这样的情况,我必须的查询两次,查询两次而且展示出来的结果也是两种,这样效果太差了

所以想问下,大家如何判断用户输入的关键字哪个是比较重要的 ,还是直接根据用户输入的关键词来查询?



感觉你的思路是正确的, 但是我感觉没有必要求交集合. 你可以先用与模型, 如果与模型搜不出来结果再使用或模型.
1."深口鞋" ==>"深口" "鞋"
2. "深口 鞋" ==>"深口" "鞋"
首先 1 2的切词是相同的. 如果"深口"&"鞋"搜出结果, 则直接返回.
否则再用"深口"|"鞋"模型搜索, 有没有结果都返回.

可以尝试继承 org.apache.lucene.queryParser.QueryParser类来实现.

mniz 2010-04-29
这问题,前几天弄了下,感觉不和人意,效果太差了,所以在进行修改了下

先把“深口鞋”分词切词,然后在用模糊搜索进行查询,利用booleanQuery 进行统一查询
因为查询的结果不准确,在对结果进行处理(细分),根据类别进行分析

和指针搜索的那种情况一样,左边在对结果处理,看到指针搜索那位兄弟的速度非常快,
不知道怎么处理
今天下午研究了下午,找到了一个办法,利用biset进行缓存处理 ,还没有弄完,测试了一把,速度好像没到指针那程度,不知道他怎么实现的

谁如果了解的话,还请分享下。谢谢
Global site tag (gtag.js) - Google Analytics