簡體   English   中英

Elasticsearch多字段查詢

[英]Elasticsearch multi field query

我無法在ElasticSearch中構建地址搜索查詢。

地址以以下結構存儲在ES中:
地址{街道,城市,郵政編碼}

這是一個示例查詢:

GET /adr-address/_search
{   
  "query": {
    "multi_match": {
      "query":       "mainstreet, houston",
      "type":        "most_fields",
      "fields":      [ "street", "city", "zipcode"]
    }
  }
}

"hits": [
 {
      "_source": {
       "id": "S6v4xyO8UE5NRcWtmMATPQ==",
       "street": "Houston 2nd Avenue",
       "zipcode": "8032",
       "city": "Houston"
    }
 },
 {
    "_source": {
       "id": "aLgQFrO8zCT8m88lAnYZPQ==",
       "street": "Houston 1st Avenue",
       "zipcode": "8044",
       "city": "Houston"
    }
 },
 {
    "_source": {
       "id": "aLgQFrO8zCT8m88lAnYZPQ==",
       "street": "mainstreet",
       "zipcode": "8044",
       "city": "Houston"
    }
 },

多次匹配查詢在大多數情況下都可以正常運行,但街道也包含城市名稱的情況除外。 Elasticsearch將這些結果分配給更高的優先級,盡管這是不可接受的,但完全可以理解。

這是_analyze結果:

GET /adr-address/_validate/query?explain
{
  "query": {
    "multi_match": {
      "query":       "mainstreet, houston",
      "type":        "most_fields",
      "fields":      [ "street", "city", "zipcode" ]
    }
  }
}

{
   "valid": true,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "explanations": [
      {
         "index": "adr-address",
         "valid": true,
         "explanation": "(zipcode:mainstreet zipcode:houston) (street:mainstreet street:houston) (city:mainstreet city:houston)"
      }
   ]
}

應該注意的是,谷歌地圖API返回相同查詢的准確結果。

到目前為止的假設/條件:

  1. 分詞器包括:空格,逗號,數字等
  2. 輸入字詞可以按任意順序包含多字街道名稱,郵政編碼或城市

關於如何改善搜索重用的任何建議?

嘗試使用cross_fields而不是most_fields作為multi_match的類型。

從文檔:

cross_fields類型對於結構化文檔(其中多個字段應匹配)特別有用。 例如,當在first_name和last_name字段中查詢“ Will Smith”時,最匹配的一個字段中可能有“ Will”,而另一個字段中有“ Smith”。

您正在使用的most_fields似乎是用於搜索相同的文本,但是以不同的方式進行了分析。

查詢示例:

GET /adr-address/_search
{   
  "query": {
    "multi_match": {
      "query":       "mainstreet, houston",
      "type":        "cross_fields",
      "fields":      [ "street", "city", "zipcode"]
    }
  }
}

鏈接到文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM