搜索结果排序

利用开源做的搜索结果排序目前主要两种计算方式:索引时做好了score计算和查询时动态计算。各有优缺点,适合不同业务。

搜索结果排序需要考虑的点比较多,比如设定不同字段不同比率来计算score,这些字段的来源是否一致,其包含的信息多大,其如何存储。如果需要动态调整,那么其改动成本多大(人员,硬件,时间,金钱等)?如果多台机器,那么是否需要mapreduce,结果是否cache,cache更新,数据一致性。如果有预处理又该如何做。索引和搜索如何协调一致等。

比较讲究的还需要不断修改搜索结果排序算法来达到准确,快速的目的。

一般搜索满足有搜索关键词显示的,用二分分词就够了,排序用lucene自带的。
特定关键词搜索,比如产品关键词,那么建立产品关键词字典,建立反向索引足够了,速度飞快,很匹配业务。
还不确定的,垂直搜索,随便找个开源分词的,然后设定死与score相关的字段的比率就够了。


好的搜索结果排序不在于一时,而在于不断改进,一如我相信美好的东西是需要反复锻造。

猜你喜欢

转载自imjl.iteye.com/blog/1665076