我有以下查询为我的搜索添加模糊性.但是,我现在意识到匹配查询不考虑搜索字符串中单词的顺序,就像match_phrase那样.但是,我不能得到match_phrase给我模糊的结果.有没有办法告诉匹配考虑单词之间的顺序和距离?
{
"query": {
"match": {
"content": {
"query": "some search terms like this",
"fuzziness": 1,
"operator": "and"
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我们有一个符合OData的API,它将一些全文搜索需求委托给Elasticsearch集群.由于OData表达式可能变得非常复杂,我们决定将它们简单地转换为等效的Lucene查询语法并将其提供给query_string查询.
我们支持一些与文本相关的OData过滤器表达式,例如:
startswith(field,'bla')endswith(field,'bla')substringof('bla',field)name eq 'bla'我们对匹配字段可以是analyzed,not_analyzed或两者(通过多场IE).所搜索的文本可以是一个单一的令牌(例如table),只有其(例如一部分tab),或数个标记(例如table 1.,table 10等).搜索必须不区分大小写.
以下是我们需要支持的行为的一些示例:
startswith(name,'table 1')必须匹配" 表1 "," 表1 00"," 表1 .5"," 表1 12上层"endswith(name,'table 1')必须匹配"房间1,表1 ","子表1 "," 表1 ","杰夫表1 "substringof('table 1',name)必须匹配"Big Table 1 back"," table 1 "," Table 1 ","Small Table1 2"name eq 'table 1'必须匹配" 表1 "," 表1 "," 表1 "所以基本上,我们接受用户输入(即传递给startswith/ 的第二个参数的内容endswith,或者相应的第一个参数substringof …