假设我有一个由三个标记组成的字符串:abc def ghi。
我想执行查询以检索完全匹配及其变体,如:
abc ghi def(任意顺序的代币)
abc def(缺少令牌)
abc def jkl ghi(在我想要的令牌之间插入的任何令牌)
azc dzf gzz(任意数量的字符中出现错误的令牌)
也就是说,我想检索具有完全令牌,变体和正字错误的文档。
我尝试了一个匹配词组前缀查询,但它不会在首字母标记中执行正则表达式,只是在最后一个标记中。
我尝试了regexp查询,但它没有在令牌之间执行斜坡。
有人可以给我一些建议吗?
提前致谢。
答案 0 :(得分:0)
假设我将下面的文档编入索引,没有特殊设置,分析器等:
PUT my_index
{
"text": "abc def ghi"
}
然后一个简单的match
就可以完成这项工作
# exact search
POST my_index/_search
{
"query": {
"match": {
"text": {
"query": "abd def ghi"
}
}
}
}
=> matches with score 0.26574233
# tokens in any ordering
POST my_index/_search
{
"query": {
"match": {
"text": {
"query": "abd ghi def"
}
}
}
}
=> matches with score 0.26574233
# missing token
POST my_index/_search
{
"query": {
"match": {
"text": {
"query": "abd def"
}
}
}
}
=> matches with score 0.2169777
# any tokens inserted between my desired tokens
POST my_index/_search
{
"query": {
"match": {
"text": {
"query": "abd ghi jkl def"
}
}
}
}
=> matches with score 0.093538016
# tokens with errors in any number of its chars
POST my_index/_search
{
"query": {
"match": {
"text": {
"query": "azc dzf gzz",
"fuzziness": 2
}
}
}
}
=> matches with score 0.25571066