Elasticsearch - 索引和搜索邮政地址

时间:2014-03-21 19:01:06

标签: elasticsearch

我正在使用jdbc-river插件从数据库表创建弹性搜索索引,该插件触及与客户地址表连接的客户表,一对多关系

目前,数据库分别有地址信息分别为street1,street2,street3,city,state,zip

这是我对客户及其地址进行搜索的片段,我正在进行一个布尔查询,该搜索应该在街道字段上进行多重匹配,并匹配其他查询,最小值应匹配3

   "query": {
      "bool": {
         "should": [
            {
               "match": {
                  "FIRST_NAME": {
                     "query": "James"
                  }
               }
            },
            {
               "match": {
                  "LAST_NAME": "Smith"
               }
            },
        {
           "multi_match": {
              "query": "10020 Pacific Mesa",
              "fields": [
                 "STREET1",
                 "STREET2",
                 "STREET3"
              ]
           }
        },
        {
           "match": {
              "CITY": "San Diego"
           }
        },
        {
           "match": {
              "STATE_CODE": "CA"
           }
        },
        {
               "match": {
                  "ZIPCODE": "92121"
               }
            }
         ],
         "minimum_should_match": "3"
      }
   }
}

虽然这有效,但它可以为匹配名字,城市和邮政编码的客户提供高分,因为他们符合最少3场比赛的标准

我的问题是,如何改进此设置?

我的想法/问题是:

  1. 这是一个提升的问题,比如街道上的州/邮编吗?
  2. 我应该完全忽略状态,因为zip应该关联 无论如何要陈述?
  3. 我应该将所有街道字段编入索引,而不是在三个字段上执行多场匹配
  4. 匹配是否足够好,或者我应该考虑创建同义词,因为用户输入可能是“112 Second Ave”与“112 2nd Avenue”
  5. 老实说,我只是在寻找提供最高质量搜索的建议和指南,我试图寻找示例,但没有找到有关邮政地址索引的相关信息

    无论如何,谢谢你的时间

0 个答案:

没有答案