2015-11-06 18 views
0

花了幾個月閱讀文檔和各種網站。我不明白應該如何使用短語提示器來影響查詢結果。我的理解是運行以下查詢和建議程序,建議程序的結果將用於查詢。如何使用詞組建議結果作爲查詢的一部分

 POST test/test/_search 
     { 
     "query": { 
      "multi_match": { 
      "query": "anti-inefffective", 
      "fields": ["*@value"] 
      } 
     }, 
     "highlight" : { 
         "fields" : { 
          "*@value" : { 
           "pre_tags" : ["<mark>"], 
           "post_tags" : ["</mark>"] 
          } 
         } 
        }, 
     "suggest" : { 
      "text" : "anti-inefffective"", 
      "simple_phrase" : { 
       "phrase" : { 
       "analyzer" : "default", 
       "field" : "_all", 
       "size" : 1, 
       "real_word_error_likelihood" : 0.95, 
       "max_errors" : 0.5, 
       "gram_size" : 2, 
       "direct_generator" : [ { 
        "field" : "_all", 
        "suggest_mode" : "always", 
        "min_word_length" : 1 
       } ], 
       "highlight": { 
        "pre_tag": "<em>", 
        "post_tag": "</em>" 
       } 
       } 
      } 
      }   
     } 

如何在json請求中得到用於查詢字詞的建議器的結果?我看過的所有例子都有一個詞組提示器,它在查詢之後執行,這對我來說似乎很奇怪。我能看到做到這一點的唯一方法是運行短語提示器查詢,然後提取該值,然後以編程方式將其添加到查詢中,然後使用建議的文本運行查詢。

換句話說,我希望能夠做谷歌的工作,如果您在Google中輸入「癌症腫瘤」,它會返回「癌性腫瘤」的結果,但您可以選擇使用不正確的短語,但修正後的短語被自動用於查詢。

+0

爲什麼?它應該是建議者。用戶可能會運行一些bizzare短語,這會爲他們帶來預期的文檔(例如),並建議一個短語。這很正常。 –

+0

@EvaldasBuinauskas不一定,如果您在Google中輸入「cancer tummour」,它會返回「癌性腫瘤」的結果,但您可以選擇使用不正確的短語,但會自動使用更正的短語。 –

+0

感謝您的糾正。我不知道是否可以使用短語提示器來做到這一點。我所能想到的將會運行一個模糊查詢,然後建議真實的短語。 –

回答

4

confidence參數一起使用時,您應該查看短語提示器的collate + query選項。

短語建議者的工作流程是這樣的:

  1. :建議的候選詞語基於 傳遞到候選產生部分參數canceroustummour

  2. 生成一個數的使用術語 候選人狂-LIB「短語建議,結合短語術語的字頻到 生成每個建議的得分。

  3. 隨着分頁/匹配選項,實際上運行查詢模板內的每個候選 (由您定義,查詢作者)這樣 ,查詢W /零結果可以被丟棄。


要模仿你所描述的谷歌功能,當您運行用戶的查詢,你也想:

  1. 使用短語建議者生成#1 "size": 1,得分最高,針對原始用戶輸入查詢的整理/非零結果短語建議。

  2. 使用默認的"confidence": 1.0短語提示器只會爲您提供短語建議,建議者認爲與原始用戶輸入查詢相比具有更高的置信度。

  3. 當你看到(高信度)建議回來沿着原來的查詢結果,客戶可以決定採取建議和到位的原始查詢的執行建議的查詢(同時保留原始查詢文本顯示爲後備搜索選項)。


簡短的回答:沒有選項來自動使用內Elasticsearch頂建議作爲查詢文本。但是,您可以使用短語「建議者」當前提供的功能在搜索客戶端中構建它。

相關問題