O******t 发帖数: 214 | 1 项目大概介绍:
产品列表大概有20多万个,
每个产品大概有1000字左右的characters,
产品和产品,以及category之间还有multiple的relationship。
现在要提高搜索的效率,
我目前的做法是这样,
#1
先对每个产品描述做一个关键字提起。
建立一个keyword-product的relationship,大概有700多万个
然后对提起出来的keyword做了一个index,
搜索的时候,根据keyword再map到relationship上
再找出产品
#2
在#1的result基础上,再filter其他条件,类似感觉颜色,category等
#3
最后得出搜索需要的list。
以上东西做完之后,
感觉并没有快多少,甚至比直接query product还慢,泪奔。
所以请大神指点,拍砖,应该如何处理更好一点? |
s***o 发帖数: 2191 | 2 感觉这个在full-text search的适用范围内,或者进一步上solr之类的 |
g*****g 发帖数: 34805 | 3 直接上solr或者elastic search。不必自己写轮子。
【在 O******t 的大作中提到】 : 项目大概介绍: : 产品列表大概有20多万个, : 每个产品大概有1000字左右的characters, : 产品和产品,以及category之间还有multiple的relationship。 : 现在要提高搜索的效率, : 我目前的做法是这样, : #1 : 先对每个产品描述做一个关键字提起。 : 建立一个keyword-product的relationship,大概有700多万个 : 然后对提起出来的keyword做了一个index,
|
O******t 发帖数: 214 | 4 多谢各位指点,
我现在的分词是在lucene基础上做的。
但是设计到后面的多种关系filter部分,
感觉很蛋疼。
能否请大神展开说说 |
d**********u 发帖数: 3371 | 5
【在 O******t 的大作中提到】 : 项目大概介绍: : 产品列表大概有20多万个, : 每个产品大概有1000字左右的characters, : 产品和产品,以及category之间还有multiple的relationship。 : 现在要提高搜索的效率, : 我目前的做法是这样, : #1 : 先对每个产品描述做一个关键字提起。 : 建立一个keyword-product的relationship,大概有700多万个 : 然后对提起出来的keyword做了一个index,
|
s***o 发帖数: 2191 | 6 没有profile一下看看卡在哪里?
【在 O******t 的大作中提到】 : 多谢各位指点, : 我现在的分词是在lucene基础上做的。 : 但是设计到后面的多种关系filter部分, : 感觉很蛋疼。 : 能否请大神展开说说
|
p****f 发帖数: 82 | 7 20多万的数据不算太大,试一下导入mysql,然后对产品描述做个full-text index,然
后比较一下和你现在的做法效果如何。 |
a***n 发帖数: 538 | 8 是不是#1出来的结果太多了。这样做2的时候要读每个记录。 |
b*******g 发帖数: 603 | 9 我觉得你应该把filtering的部分都弄进search API. 这样会快很多。
【在 O******t 的大作中提到】 : 多谢各位指点, : 我现在的分词是在lucene基础上做的。 : 但是设计到后面的多种关系filter部分, : 感觉很蛋疼。 : 能否请大神展开说说
|
d*****d 发帖数: 180 | 10 直接lucene生成index,每文档里可以加入多个属性,搜索时可以用逻辑表达式匹配这
些属性。7,8年前我这么做的,没问题 |
O******t 发帖数: 214 | 11 多谢各位大神指点,
我按照楼上各位的思路再去试试,
然后再来更新。 |
O******t 发帖数: 214 | 12 更新如下:
#1 不做relationship,直接做full-text index
搜索速度快於做relatioship,但是keywords matching不精确。
类似搜索个“附件”,把所有含这个单词的都给拉出来了,而不是真的附件类的。
简单来说,就是出了很多junk的results。
#2 用lucene做index,加多个属性,现在正在搞,
因为是在.net平台,所以用了lucene.net,还在造轮子中,
高手如果有什么建议,或者现成东西,还望赐教。
多谢各位了。 |