结果中再检索(Search Within Results)功能

结果中再检索功能,也称作“收窄搜索结果”,旨在帮助用户在搜索结果页面或产品列表页面更精准地找到所需商品。通过产品目录、价格、相似关键字和自定义属性等进行过滤,确保用户能快速定位心仪产品。常见的实现方式包括动态和静态自定义属性选项、点击触发或页面装载全展示结果数量,以及在页面左侧、上方或右侧的布局。此功能在B2C和B2B网站上有所不同,大多数B2C网站倾向于将它置于左侧,而B2B则常设于上方。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
结果中再检索 (Search Within Results) 有很多称呼,比如“收窄搜索结果(Narrow Your Result/Narrow Your Search”、“精确搜索(Refine Search)”、“商品筛选/选机引擎”等等。
都是同一个意思。
 
“结果中再搜索”功能可以是在搜索结果页面提供,也可以直接在产品列表页面提供,目的都是让用户通过多种灵活的方式
快速和精确的找到自己心仪的商品。
 
下面搜罗了一些比较典型的站点的一些实现供大家在设计中参考:
 
网站
 
链接、截图和分析说明
 
 
 
 
通过 search 关键字进入搜索结果页面或者
进入任何一个目录下,均可以在目的页面看到产品列表左边的“ select your options ”栏,供你在结果集再检索。
1) 这些栏目有些是自定义属性(如processor types)、有些则是产品本身的字段(list price),要分别处理。
每个关键字旁边还有该关键字的记录数量,这点可能在点击该项目时才 Ajax 动态检索。如果属性值不多,性能应该接受,因为用户触发的,而不是页面显示时同时装载。
EP
 
 
 
 
使用全展开式,观察左侧:
1) shop by category/price是固定的,一定会出现的。其他那些栏目甚至是栏目下面的值的数量则根据你的查询条件不同动态显示。
2) 比如我搜索“digital cameras”,shop by price只有:
 
    而搜索“camera”,则是:
   
    可能ep对结果集进行了分析,统计出价格范围、目录范围、包含属性(甚至属性值),然后根据这些数据来生成左侧的filter。
每个属性值旁边都有结果数量显示,页面装载时要统计这么多,不知道性能如何保证?
国美
 
 
 
 
国美的搜索是必须选择一个商品分类,即一级目录。
我选择了冰箱,然后分别使用“冰箱”、“ LG 冰箱”来搜索,发现左侧的“冰箱筛选”的 5 个属性的可选项是没有变化的,我判断左侧的“商品筛选”栏只是根据一级目录来定,没有像 EP 做得那么复杂。
可用性稍差,因为可能通过筛选后结果集会偏离了原来的搜索结果,导致用户再搜索时会搜索不到数据。
GAP
 
 
 
 
输入 shirt 搜索出的结果。左侧 filter 栏目就 3 项, category color price 。想换其他 keyword 搜索时, gap 居然在维护,以后再试。
展现形式和 EP 一样,都是全展开方式。
对每个属性值也列出搜索结果数量。
卓越(亚马逊中国)
 
http://www.amazon.cn/mn/searchApp?ix=sunray&pageletid=headsearch&searchType=1&keywords=%E7%AE%A1%E7%90%86&Go.x=0&Go.y=0&searchKind=keyword&bestSaleNum=3
 
 
 
输入“管理”搜索,进入的页面。
左边分为两部分:
1 )按目录再搜索(注意点击进入一个目录后左侧将显示其子目录,我觉得很方便,经常使用这个功能)。
2 )提供其他相关搜索词。即在系统的关键字词库中搜索,列出相似的关键字,这个功能也挺不错,而且卓越是会记录用户自己输入的搜索关键字来丰富词库。
阿里巴巴
 
 
 
 
 
 
选择 supplier ,输入 cup 搜索。
阿里的再搜索栏其实就是两部分:
1)  关键字再搜索,列出数个,可以 View all ,点击时在页面展开(只是做页面内的隐藏而已)。
2)  Refine cup by
如果使用过阿里的 my alibaba ,会发现这些 refine 的项目其实都是 supplier 本身的字段,其中 category 的值是动态的,其他的都是静态,只是阿里将一些常用的放在最上面( sort order ?)
 
观察 B2B 站点基本都是这种处理方式,可能都是受阿里影响吧。
中域网(做手机)
 
 
 
 
 
 
 
中域的搜索结果页面的再搜索和其他的差不多。值得一提就是我给出的这个页面:
“选机中心”功能。
 
比较复杂的就是选机引擎了,主要是展示的形式比较多,有三种:
范围、单选和多选。
 
其中是否单选或多选可以在属性管理中增加字段管理。
范围则需要在模板中定制了。
 
 
 
 
 
 
总体而言:结果中再检索功能包括下面几个方面:
1.  再检索项目 :包括产品目录、价格、相似关键字和自定义属性。其中目录和价格是固定会出现,自定义属性可能会根据结果集不同而不同。
2.  自定义属性的可选项的变化 :1)动态变化;2)静态,不随结果集改变。后者相对简单,但是可能会导致新的结果集偏离旧的结果集。
3.  再检索值对应的结果数量 :1)点击触发形式;2)页面装载全展示形式。后者在性能上如何保证是一个问题。
4.  呈现的位置 :1)左侧;2)结果集上面;3)右侧。看了这么多网站,绝大多数B2C站点都是放在左侧,B2B站点基本都是放在上面,只有很少的站点是放在右侧。
 
====================================
Winston Yan 颜超敏  电子商务|Java|软件|管理|互联网
====================================
 
### FAISS检索概述 FAISS(Facebook AI Similarity Search)是一个用于高效处理大规模相似度搜索的库,特别适用于稠密向量数据集。它提供了多种索引结构来优化不同场景下的查询效率和精度。 #### 索引类型介绍 FAISS 提供了几种主要的索引类型,每种都有其特定的应用场景和性能特点: - **IndexFlatL2**: 这是最基础的一种索引方式,计算所有向量之间的 L2 距离并返回最近邻的结果。虽然简单直观,但在大数据集上的性能可能受限[^3]。 - **IndexIVFFlat (Inverted File with Flat)**: 通过将整个数据库划分为若干子簇(cluster),仅在与查询点最接近的一个或几个簇内进行精确距离计算,从而显著减少计算开销。相比 IndexFlatL2,在保持较高召回率的同时提升了速度。 - **IndexIVFPQ (Product Quantization within Inverted Files)**: 结合了乘积量化技术进一步压缩存储空间,并加速近似最近邻查找过程。这种方法牺牲了一定程度上的准确性换取更高的运行效率以及更低内存占用情况。 ### FaissRetriever 实现流程 以下是利用 `Faiss` 构建一个简单的检索系统的 Python 示例: ```python import numpy as np from faiss import IndexFlatL2, IndexIVFFlat, write_index, read_index def build_faiss_index(vectors, index_type='ivf'): """ Build a FAISS index based on the given type. :param vectors: A list of dense vector representations to be indexed. :param index_type: Type of FAISS index ('flat', 'ivf'). :return: The constructed FAISS index object. """ dim = len(vectors[0]) # Dimensionality of each vector if index_type == 'flat': index = IndexFlatL2(dim) # Create an exact search index using L2 distance metric elif index_type == 'ivf': nlist = 100 # Number of clusters/centroids for IVF algorithm quantizer = IndexFlatL2(dim) index = IndexIVFFlat(quantizer, dim, nlist, faiss.METRIC_L2) assert not index.is_trained index.train(np.array(vectors).astype('float32')) # Train the index before adding items assert index.is_trained else: raise ValueError(f"Unsupported index type {index_type}") index.add(np.array(vectors).astype('float32')) return index # Example usage if __name__ == "__main__": data_vectors = [[random.random() * 10 for _ in range(128)] for _ in range(1000)] ivf_index = build_faiss_index(data_vectors, 'ivf') flat_index = build_faiss_index(data_vectors[:10], 'flat') # Smaller dataset suitable for FLAT indexing query_vector = np.array([data_vectors[-1]]).astype('float32') k = 5 # We want top-k results D, I = ivf_index.search(query_vector, k) # Actual search print(I.flatten()) # Indices of nearest neighbors ``` 此脚本展示了如何创建两种类型的 FAISS 索引——一种是基于精确匹配的 Flat 索引;另一种则是更高效的 IVF 方法。注意实际应用中需调整参数如 `nlist`, 数据预处理步骤等以适应具体需求。 ### 性能对比分析 当涉及到高维稀疏特征或者超大型语料库时,HNSW 图形算法表现出色,不仅超越传统的倒排文件系统(例如 IVF_Flat),而且也领先于其他流行的 ANN 搜索策略像 PQ 和 OPQ 变体[^2]。然而对于某些特定条件下的任务来说,选择合适的索引机制至关重要,因为不同的配置会对最终效果产生巨大影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值