2016-05-12 68 views
2

這裏是我的查詢:彈性:是否可以禁用某些領域的模糊性?

"multi_match":{ 
    "query":"test", 
    "fields":[ 
     "name^2", 
     "sortName^2", 
     "externalId", 
     "type^0.5" 
    ], 
    "type":"best_fields", 
    "tie_breaker":0.3, 
    "minimum_should_match":"30%", 
    "fuzziness":"AUTO" 
} 

我的目標是具有模糊性上,除了「外部ID」各個領域的合作。原因在於,用戶在搜索特定ID時找到許多結果是沒有意義的。

我會假設如果一個字段設置爲'not_analyzed'它不會應用模糊性,但它似乎並非如此。

有沒有一種方法可以在映射中指定一個字段不適合模糊?

+0

有在映射沒有辦法告訴。查詢時應用模糊 –

回答

1

當你需要設置每場模糊,我看到2種方法至今:

  • 要麼dis_maxbool查詢

  • 使用有些笨拙query_stringfuzziness設置爲0合併2個查詢爲externalId字段。查詢可能看起來像:

    { 
        "query": { 
        "query_string": { 
         "query": "name:test^2 sortName:test^2 externalId:test~0 type:test^0.5" 
        } 
        } 
    } 
    
+0

它似乎不起作用。它沒有給我完全匹配的結果。也許我錯過了一些東西,你能給這個操作員發一個參考嗎? Google在搜索「〜」或「代字號」時沒有多大幫助 – David

+0

是的,我的糟糕,它不工作,我錯過了。這是我想到的參考:http://lucene.apache.org/core/3_0_3/queryparsersyntax.html#Fuzzy搜索 – Slam

+0

感謝大滿貫。我相信「dis_max」會在這裏工作,因爲它應該與我現在使用的「best_fields」具有相同的效果。我的用例更復雜(我在這裏發佈了一個簡化版本),現在我無法實現並測試,一旦我測試它,我會再次更新。 – David

相關問題