2016-04-11 2 views
0

У меня есть индекс, созданный в службе поиска Azure, где у меня есть несколько полей строк, помеченных как поиск с использованием анализатора чешского - Lucene. На чешском языке мы используем некоторые персонажи с акцентом, и обычно люди заменяют акцентированных персонажей без акцента при наборе текста. Поэтому, например, «Вацлав» (имя) имеет то же значение, что и «Вацлав». В моем указателе у меня мало документов со словом «Вацлав» и ни с словом «Вацлав».Azure Поиск - основной поиск на чешском языке

Насколько я ожидаю, Azure Search вернет все документы, содержащие слово «Вацлав», когда я ищу «Вацлав», это не так. Мне интересно, должен ли я как-то разобрать запрос до отправки в поисковую систему.

Я провел тесты как через Azure Portal (установка версии API до 2015-02-28-Preview), так и через мой код, используя самый последний SDK Microsoft.Azure.Search 1.1.1.

ответ

1

По умолчанию Lucene и Microsoft analyzers для чешского языка не игнорируют диакритические знаки. Самый простой способ добиться того, что вы хотите, - использовать анализатор standardasciifolding.lucene. В качестве альтернативы вы можете создать custom analyzer, чтобы добавить фильтр AKII folding token в стандартную цепочку анализа для чешского языка. Например:

{ 
    "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" 
    } 
    ] 
} 

Мы понимаем, что опыт не является оптимальным. Мы работаем над тем, чтобы упростить настройку.

Дайте мне знать, если это ответ на ваш вопрос

Смежные вопросы