云搜索服务支持添加类目预测词条,通过人工干预来提升检索结果的准确度。本文通过简单示例,演示类目预测的使用方式。
在普通的用户检索场景中,输入搜索词水
,返回的结果中水库鱼头
、卤水豆腐
靠前,而XX矿泉水
却排在后面,影响用户检索体验。
为解决上述问题,可以添加类目预测词条,将关注的类目相关度提高。后续检索过程在计算每个物品的排序分时,目标类目物品的得分高,将会排在更前面,从而提高了搜索的业务价值。
使用类目预测前 | 使用类目预测后 |
---|---|
未使用类目预测时,查询结果得分排名为:水库鱼头>卤水豆腐>XX矿泉水。 | 使用类目预测后,查询结果得分排名为:XX矿泉水>卤水豆腐>水库鱼头。 |
当您不使用类目预测时,在普通查询时,您所关注的类目往往排名较靠后。
创建索引并写入数据。
通过公网访问 Dashboards。具体步骤,请参见公网访问 Kibana/Dashboards。
在页面左侧菜单,选择 Management > Dev Tools,进入开发工具页面。
定义索引 mapping。
PUT /index-test-1 { "mappings":{ "properties": { "name": {"type": "text"}, "category": {"type": "keyword"}, "price": {"type": "integer"}, "date":{ "type": "date","format":"yyyy-MM-dd"} } } }
批量写入文档。
POST _bulk {"index" : { "_index": "index-test-1","_id":1} } {"name":"水库鱼头","category":"鱼","price":"25","date":"2024-05-10"} {"index" : { "_index": "index-test-1","_id":2} } {"name":"卤水豆腐","category":"豆腐","price":"3","date":"2024-05-11"} {"index" : { "_index": "index-test-1","_id":3} } {"name":"XX矿泉水","category":"矿泉水","price":"2","date":"2025-05-10"}
通过关键字检索。
GET /index-test-1/_search { "query": { "match": { "name": "水" } } }
从返回结果中得到的排名为:水库鱼头>卤水豆腐>XX矿泉水。
当您添加类目预测词条,提升搜索词关联的类目相关度,再次查询时,您所关注的类目排名将会更靠前。
创建索引并写入数据。
参考场景一创建索引index-test-2
并写入相同数据。
配置并生效类目预测词条。具体操作,请参见添加类目预测词条。
配置搜索管道,并添加预处理器。
以下命令表示:创建一个名为search_intervention_pipeline
的搜索管道,向该管道添加了一个名为query_rewrite
的请求处理器,并将其配置为空对象{}
。
按以下配置后,在搜索请求执行之前将对查询进行重写操作。
PUT _search/pipeline/search_intervention_pipeline { "request_processors": [ { "query_rewrite": {} } ] }
指定搜索管道,然后根据关键字查询。
GET /index-test-2/_search?search_pipeline=search_intervention_pipeline { "query": { "match": { "name": "水" } } }
从返回结果中得到的排名为:XX矿泉水>水库鱼头>卤水豆腐。