Я индексирую кучу документов на разных языках и, насколько я понимаю, могу указать, какой анализатор использовать для каждого документа во время индексации в одном из полей документа, используя отображение _analyzer:
см. http://www.elasticsearch.org/guide/reference/mapping/analyzer-field.html
По сути, во французском документе в поле языка установлено значение «французский», что указывает Elasticsearch, что ему необходимо применить французские правила выделения корней и удалить французские стоп-слова.
Теперь мне нужно указать анализатор во время запроса, чтобы Elasticsearch мог применить те же правила определения корней к запросу перед его фактической обработкой? Если так, то это немного обидно, потому что я хотел бы иметь возможность выполнять поиск по всему индексу, в конечном итоге предоставляя пункт «следует», отдавая предпочтение документам на одном языке над другими.
Я не знаю, создает ли Elasticsearch несколько запросов, применяя все анализаторы, которые до сих пор использовались в индексе, или нет. Если это не так, единственное решение, которое я вижу, - это разделить документы в соответствии с их языком на разные типы, а затем запустить несколько запросов параллельно и иметь какую-то функцию приемника на клиенте, которая объединяет результаты и сортирует их по их оценке. Но, хотя я мог бы отправить массовый запрос (чтобы ограничить круговые обходы сети), это решение явно не оптимально.
Есть предположения?