利用开源做的搜索结果排序目前主要两种计算方式:索引时做好了score计算和查询时动态计算。各有优缺点,适合不同业务。
搜索结果排序需要考虑的点比较多,比如设定不同字段不同比率来计算score,这些字段的来源是否一致,其包含的信息多大,其如何存储。如果需要动态调整,那么其改动成本多大(人员,硬件,时间,金钱等)?如果多台机器,那么是否需要mapreduce,结果是否cache,cache更新,数据一致性。如果有预处理又该如何做。索引和搜索如何协调一致等。
比较讲究的还需要不断修改搜索结果排序算法来达到准确,快速的目的。
一般搜索满足有搜索关键词显示的,用二分分词就够了,排序用lucene自带的。
特定关键词搜索,比如产品关键词,那么建立产品关键词字典,建立反向索引足够了,速度飞快,很匹配业务。
还不确定的,垂直搜索,随便找个开源分词的,然后设定死与score相关的字段的比率就够了。
好的搜索结果排序不在于一时,而在于不断改进,一如我相信美好的东西是需要反复锻造。
搜索结果排序需要考虑的点比较多,比如设定不同字段不同比率来计算score,这些字段的来源是否一致,其包含的信息多大,其如何存储。如果需要动态调整,那么其改动成本多大(人员,硬件,时间,金钱等)?如果多台机器,那么是否需要mapreduce,结果是否cache,cache更新,数据一致性。如果有预处理又该如何做。索引和搜索如何协调一致等。
比较讲究的还需要不断修改搜索结果排序算法来达到准确,快速的目的。
一般搜索满足有搜索关键词显示的,用二分分词就够了,排序用lucene自带的。
特定关键词搜索,比如产品关键词,那么建立产品关键词字典,建立反向索引足够了,速度飞快,很匹配业务。
还不确定的,垂直搜索,随便找个开源分词的,然后设定死与score相关的字段的比率就够了。
好的搜索结果排序不在于一时,而在于不断改进,一如我相信美好的东西是需要反复锻造。
本文讨论了利用开源技术进行搜索结果排序的两种主要方法:索引时预计算score和查询时动态计算。这两种方法各有利弊,并适用于不同的业务场景。文章还深入探讨了搜索结果排序中需要考虑的因素,包括字段权重设定、数据一致性处理、缓存策略及搜索算法的持续优化。
230

被折叠的 条评论
为什么被折叠?



