Почему мой запрос fuzzy_like_this в некоторых случаях совпадает, а в других нет?

Я новичок в ElasticSearch, но последние пару дней читал об этом, пытаясь найти «лучший» тип поиска для моего приложения. Я хочу иметь возможность сопоставлять несколько терминов с несколькими результатами, но также иметь частичные результаты слова. Ниже приведено то, что я сейчас использую, и он отлично работает, находя результаты для всех введенных слов, таких как «Michigan Creative VP», находит людей, которые работают в Michigan Creative и VP Comm, но когда я ищу «управление» вместо «управление» ничего не подходит

$params =
[
'index' => 'myindex',
'type' => 'person',
'body' =>
[
'from' => 0,
'size' => 500,
'query' =>
[
'fuzzy_like_this' =>
[
'_all' =>
[
'like_text' => $keywords,
'fuzziness' => 0.5,
],
],
],
]
];

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

1

Решение

Пара мыслей

  1. fuzzy_like_this запрос построен для более-как это. В основном это обычно используется для рекомендаций по содержанию. Это то, что вы делаете? Для более типичного поиска я бы ожидал увидеть match или же multi_match запросы. Вы пробовали это?

  2. Похоже, что текст становится токенизированным, и fuzzy_like_this совпадает с точными токенами, как при традиционном поиске. Например

    Michigan Creative VP ‘находит людей, которые работают в Michigan Creative и VP Comm, но когда я ищу «управлять» вместо «управление», ничего не появляется.

    Мне кажется, это указывает на то, что документы содержат термины [vp] и [comm], и ваш запрос соответствует, потому что [vp] из запроса является совпадением. Другой документ соответствует, потому что [michigan] и [creative] являются точными совпадениями

  3. Ваша нечеткость кажется недостаточно высокой, чтобы соответствовать запросу manage в management, Изучение формула здесь Вы можете подсчитать, сколько допустимых правок можно включить в результаты поиска:

    length(term) * (1.0 - fuzziness)

    что в данном случае означает

    length(manage) * 0.5 == 6 * 0.5 or 3

    который, кажется, позволяет редактировать до 3 символов, и management добавляет 4 символа

Некоторые большие указатели изображения:

  • Поиск только на расстоянии редактирования может не сработать в пользу основной силы поисковой системы. Поисковая система будет лучше использоваться, когда вы берете текст и нормализуете его до токенов, используя процесс анализа. Я мог бы предложить прочитать эта почта как учебник для начинающих. Мы также поговорим об этом подробно в главе 4 моей книги, Релевантный поиск

  • Как только вы понимаете анализ, лучшее решение общей проблемы соответствия management в manage возможно вытекающие который сводит условия к их корневой форме, прежде чем пытаться сопоставить.

  • Исходя из того, как вы относитесь к своим правилам соответствия поиска, может показаться, что вы захотите настроить тестовые случаи и использовать тестовый подход к вашему поиску.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]