Vespa的YQL userInput()生效所需的最低配置是什么?
Vespa YQL userInput() 生效的最低配置方案
当前你的wpsolr_title字段仅配置了基础的索引和摘要存储,默认采用精确匹配逻辑,因此用userInput("product")查不到含"product 1"的文档。要实现全文检索匹配,需添加以下最低配置:
1. 给字段配置分词器
修改字段定义,添加分词器配置,让字段内容被拆分为词项而非精确匹配:
field wpsolr_title type string { indexing: summary | index analyzer: simple # 简单分词:按非字母数字分割、转小写 }
如果需要针对英文优化(比如去除停用词、词干提取),可以自定义分词器:
# 自定义英文分词器 analyzer english { tokenizer: unicode filter: lowercase filter: stopwords filter: porterstem } field wpsolr_title type string { indexing: summary | index analyzer: english }
2. 确保userInput关联目标字段
有两种方式让userInput知道要搜索哪个字段:
方式一:查询时指定目标字段
修改YQL查询语句,明确指定搜索wpsolr_title:
{"userQuery":"product","yql":"select * from wpsolr1 where userInput(@userQuery, {target: \"wpsolr_title\"})"}
方式二:配置默认字段集
在schema中添加默认字段集,让userInput默认搜索该字段:
fieldset default { fields: wpsolr_title }
为什么之前无法匹配?
默认情况下,未配置分词器的string字段采用精确匹配,只有当查询词和字段内容完全一致时才会命中。添加分词器后,字段内容会被拆分为独立词项(比如"product 1"拆成"product"和"1"),查询时也会对userQuery做相同分词处理,从而匹配到包含目标词的文档。
内容的提问来源于stack exchange,提问作者WPSOLR
相关产品推荐
相关产品推荐

