我使用query_string
进行全文搜索,并使用type
来定义如何使用full_text搜索进行操作,我必须使用的类型之一是phrase_prefix
,返回具有确切术语的文档......
这是我的问题:
当我想搜索一个单词时,例如tea
,返回的大部分文档都是teacher
,我知道要解决此问题,我必须使用phrase
键入...但是当我将这种类型用于一个单词术语时,我会遇到另一个问题,例如ui
..
因为大多数文档都包含UI/UX
个字词,在phrase
类型搜索中这些文档不会返回..
所以我的查询必须像phrase_prefix一样,但不是所有的时间......问题是我不知道确切的时间!
如果有人对我的问题有任何解决方案..我会非常感谢与我分享。
答案 0 :(得分:0)
解决此问题的一种简单方法是使用在布尔应查询中将 OR 连接在一起的两个查询。在这种情况下,您将在两种情况下检索结果。这意味着,当您搜索tea
时仍然可以同时获得teacher
和tea
,但是因为tea
这两个条款都匹配 - 您应该得到tea
的得分较高。同样适用于UI
查询示例如下:
{
"query": {
"bool" : {
"should" : [
{
##query1
},
{
##query2
}
]
}
}
}
这当然不理想,但至少它会让你去。
有关should子句的更多信息 - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html