弹性搜索 phrase_prefix 搜索
elasticsearch phrase_prefix search
我正在使用 query_string
进行全文搜索,并使用 type
来定义如何使用 full_text 搜索,我必须使用的一种类型是 phrase_prefix
, return 个具有确切术语的文档...
这是我的问题:
当我想搜索一个词项时.. 例如 tea
大多数文档 return 是因为 teacher
,我知道要解决这个问题我有使用 phrase
类型...但是当我将这种类型用于单词项时,我会遇到另一个问题,例如 ui
..
因为大多数文档都是UI/UX
个词,在phrase
类型搜索这些文档不会return..
所以我有一个查询,它的行为必须像 phrase_prefix 但不是所有时候...问题是我不知道确切的时间!
如果有人对我的问题有任何解决方案..我将非常感谢与我分享。
解决此问题的一个简单方法是使用两个查询将它们与布尔 should 查询中的 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
我正在使用 query_string
进行全文搜索,并使用 type
来定义如何使用 full_text 搜索,我必须使用的一种类型是 phrase_prefix
, return 个具有确切术语的文档...
这是我的问题:
当我想搜索一个词项时.. 例如 tea
大多数文档 return 是因为 teacher
,我知道要解决这个问题我有使用 phrase
类型...但是当我将这种类型用于单词项时,我会遇到另一个问题,例如 ui
..
因为大多数文档都是UI/UX
个词,在phrase
类型搜索这些文档不会return..
所以我有一个查询,它的行为必须像 phrase_prefix 但不是所有时候...问题是我不知道确切的时间!
如果有人对我的问题有任何解决方案..我将非常感谢与我分享。
解决此问题的一个简单方法是使用两个查询将它们与布尔 should 查询中的 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