2014-09-19 140 views
4

我試圖從多字段獲取建議。我找不到像這樣的例子,所以也許這不是最好的想法,但我對你的意見感興趣。elasticsearch完成建議在多字段

映射:

 
POST /authors 
    { 
     "mappings": { 
      "author": { 
      "properties": { 
       "name": { 
        "type": "multi_field", 
        "fields": { 
         "name": { 
         "type": "string", 
         "index": "analyzed" 
         }, 
         "ac": { 
         "type": "completion", 
         "index_analyzer": "simple", 
         "search_analyzer": "simple", 
         "payloads": true 
         } 
        } 
       } 
      } 
      } 
     } 
    } 

數據:

 

POST /authors/author/1 
    { 
     "name": "Fyodor Dostoevsky" 
    } 

查詢:

 
POST /authors/_suggest 

    { 
     "authorsAutocomplete": { 
      "text": "fyodor", 
      "completion": { 
      "field": "name.ac" 
      } 
     } 
    } 

的要求是:

  • GET查詢與文本「陀」,並與「陀思妥耶夫斯基」的作品,這個例子僅適用於「陀」
  • 可以使過濾建議

任何想法如何,我可以做到這些?

+0

從映射中刪除index_analyzer和search_analyzer。保持它只有完成類型.. – 2014-09-19 14:27:18

+0

,沒有改變結果 – Ins 2014-10-17 08:22:03

回答

2

首先,建議者在多領域工作不好,所以你可能想把它放在外面。 其次,爲了使用名稱和名字查詢工作,必須在發佈數據時選擇輸出/輸入。

工作代碼SENSE的例子:

POST authors 

PUT authors/_mapping/author 
{ 
    "properties" : { 
     "name" : { "type" : "string" }, 
     "suggest" : { "type" : "completion"} 
    } 
} 

POST authors/author/1 
{ 
    "name": "Fyodor Dostoevsky", 
    "suggest": { 
     "input": ["Dostoevsky", "Fyodor"], 
     "output": "Fyodor Dostoevsky" 
    } 
} 

POST authors/_suggest 
{ 
    "authorsAutocomplete": { 
     "text": "d", 
     "completion": { 
      "field": "suggest" 
     } 
    } 
} 

DELETE authors 

結果:

{ 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "authorsAutocomplete": [ 
     { 
      "text": "d", 
      "offset": 0, 
      "length": 1, 
      "options": [ 
       { 
        "text": "Fyodor Dostoevsky", 
        "score": 1 
       } 
      ] 
     } 
    ] 
} 

篩選不可用於建議。要實施某種過濾,您可以查看此建議中關於上下文使用的blog post

+0

謝謝你的答案。有沒有可能像定期查詢那樣對名稱和名字應用不同的權重? – 2015-01-30 15:29:55

+1

嗨@哈里。 詳細解釋這個問題將超出這個問題的範圍,並會使這個問題變得非常混亂。你可以看看[這裏](http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_boosting_query_clauses.html),或者提出一個新問題並要求我回答。 Regards, Heschoon – Heschoon 2015-01-31 11:02:34

+0

非常感謝,@Heschoon!這篇文章很有幫助,但我仍然不確定如何使它成爲完成建議者的具體工作。任何機會,你可以回答我的[問題](http://stackoverflow.com/q/28268418/2926423)? – 2015-02-01 21:59:56

相關問題