2016-04-11 31 views
0

我在Azure搜索服務中創建了一個索引,其中有幾個字符串字段使用捷克 - Lucene分析器標記爲可搜索。在捷克語中,我們使用一些重音字符,並且人們在輸入時用非重音替換重音字符是很常見的。因此,例如「Václav」(名稱)與「Vaclav」具有相同的含義。在我的索引中,我只有幾個文件帶有「Václav」字樣,而沒有帶有「Vaclav」字樣的文件。Azure搜索 - 用捷克語進行基本搜索

儘管我期望Azure Search能夠在搜索「Vaclav」時返回包含單詞「Václav」的所有文檔,但事實並非如此。我想知道是否必須在發送到搜索引擎之前以某種方式解析查詢。

我通過Azure門戶(設置API版本到2015-02-28-Preview)運行我的測試,並通過我的代碼使用最新的SDK Microsoft.Azure.Search 1.1.1。

回答

1

默認情況下Lucene和Microsoft analyzers捷克語不會忽略變音符號。實現你想要的最簡單的方法是使用standardasciifolding.lucene分析器。或者,您可以構建custom analyzer以將ASCII摺疊令牌篩選器添加到捷克的標準分析鏈。例如:

{ 
    "name":"example", 
    "fields":[ 
    { 
     "name":"id", 
     "type":"Edm.String", 
     "key":true 
    }, 
    { 
     "name":"text", 
     "type":"Edm.String", 
     "searchable":true, 
     "retrievable":true, 
     "analyzer":"my_czech_analyzer" 
    } 
    ], 
    "analyzers":[ 
    { 
     "name":"my_czech_analyzer", 
     "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer", 
     "tokenizer":"standard", 
     "tokenFilters":[ 
     "lowercase", 
     "czech_stop_filter", 
     "czech_stemmer", 
     "asciifolding" 
     ] 
    } 
    ], 
    "tokenFilters":[ 
    { 
     "name":"czech_stop_filter", 
     "@odata.type":"#Microsoft.Azure.Search.StopTokenFilter", 
     "stopwords_list":"_czech_" 
    }, 
    { 
     "name":"czech_stemmer", 
     "@odata.type":"#Microsoft.Azure.Search.StemmerTokenFilter", 
     "language":"czech" 
    } 
    ] 
} 

我們意識到現在的體驗並非最佳。我們正在努力使這樣的定製更容易。

讓我知道這是否回答你的問題