Genre Expansion в Elasticsearch 6.1

А можно jstack запустить и прислать сюда результат?

Видимо, проблема была в кривых руках, потому что не могу это воспроизвести.
Теперь следующий вопрос: если предположить, что синоним - лишь часть запроса, то есть, например, запрос выглядит как *cat* - можно ли заставить его каким-то образом искать и *kitten*? Какой токенайзер подошел бы в этом случае?

Если синонимы использовались при индексации - то ca* найдет cat, который получился при обработке kitten. Если вам надо искать именно *kitten* то лучше обрабатывать синонимы в вашем приложении и посылать elasticsearch готовый запрос.

Однако, надо отметить, что elasticsearch это не реляционная база данных, и запросы типа *foo*, которые получаются при дословном переводе LIKE '%foo%' работают далеко не оптимально. Более разумный подход был бы перетренировать пользователей, изменить приложение или поменять анализ, чтобы избежать такого рода запросов.

Спасибо! И еще один вопрос: а можно ли после создания индекса как-то добавить к нему словарь? я пытаюсь через _settings, но он ругается:

            "type": "illegal_argument_exception",
            "reason": "Can't update non dynamic settings [[index.analysis.analyzer.default.filter,
            index.analysis.analyzer.default.tokenizer]] for open indices
            [[pet_index/229jzNDiTfmgblF4GeIKUA]]"

Если этот токенайзер используется только при поиске, то его можно изменить предварительно закрыв индекс. Если с помощью него что-то индексировалось, то все эти документы будет необходимо пере-индексировать, и проще будет просто создать новый индекс с новыми установками и пере-индексировать все туда.

Спасибо!

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.