如何在Marqo中实现精准关键词搜索,仅返回含指定关键词的文档?
如何在Marqo中仅获取包含指定关键词的文档
Marqo默认的search()方法是基于语义相似度返回排序结果,要实现仅筛选包含指定关键词的文档,可以通过构造结构化查询来实现,以下是几种实用方案:
1. 精确匹配单个关键词(布尔查询)
使用bool查询的must子句,指定文档必须满足的关键词匹配条件(支持多字段同时匹配):
results = mq.index("my-index").search( q={ "bool": { "must": [ {"term": {"Description": "你的目标关键词"}}, {"term": {"Title": "你的目标关键词"}} ] } } )
- 每个
term对应一个字段的精确匹配要求,只有所有must条件都满足的文档才会被返回。 - 注意字段类型:如果字段是
keyword类型(不分词),term会匹配整个字段内容;如果是text类型,则匹配分词后的单个词项。
2. 精确匹配连续短语(短语查询)
如果需要匹配连续的完整短语而非单个词,使用match_phrase查询:
results = mq.index("my-index").search( q={ "match_phrase": { "Description": "需要匹配的连续短语" } } )
这种方式会严格匹配字段中连续出现的目标短语,适合精准定位特定语句片段的场景。
3. 结合语义搜索与关键词过滤
如果想要在语义搜索的基础上,再过滤出包含指定关键词的文档,可以把语义查询和布尔条件结合:
results = mq.index("my-index").search( q={ "bool": { "must": [ {"match": {"Description": "语义搜索查询文本"}}, {"term": {"Title": "必填关键词"}} ] } } )
内容的提问来源于stack exchange,提问作者sirrdeeqq
相关产品推荐
相关产品推荐

