我正在尝试对括号内的名称进行 flex 搜索。我正在使用名称数据库,某些名称在“名字”字段中包含处女名称。少女的名字用方括号表示,例如“Samantha [Murray]”。我的客户希望我们的“精确搜索”功能起作用,这样,如果您搜索“Murray”,则只会获得以Murray为名的结果,而不包括姓氏;但是,如果您搜索“[Murray]”,则会得到娘家姓,但不是“firstname” = Murray,即搜索“Murray” >>“Murray Smith”,而不是“Samantha [Murray] Jones”,则搜索“[Murray]” >>反之亦然。

到目前为止,我的问题是 flex 搜索似乎完全忽略了方括号。这是我的查询...

{
  "query": {
      "filtered": {
          "query": {
              "bool": {
                  "must": [
                      {
                          "query_string": {
                              "default_field" : "first_name",
                              "query" : "\\[Murray\\]"
                          }
                      }
                  ]
              }
          }
      }
  }
}

但是我得到的结果与“query”:“Murray”相同,完全没有括号。我尝试了一个正则表达式,但结果却更糟,我得到的名字甚至与“Murray”(我有“Rogers”之类的名字)都不接近。

Elastic中是否可能存在此类请求?如果是这样,我需要更改什么?

最佳答案

熟悉分析仪-http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-analyzers.html

如果您使用默认值,则您的分析仪可能会删除括号。
如果您希望能够使用它进行搜索,则需要定义一个不删除括号的分析器。

09-07 20:42