Все эти проблемы связаны с обработкой входящего текста для этих полей .Вам нужно создать цепочку фильтров для поля - и, возможно, использовать несколько полей для разных вариантов использования и расставить приоритеты для тех, которые используют qf
- который обрабатывает входные значения, чтобы сделать то, что вы хотите.
Ваш первый случайможет быть решена с помощью PatternReplaceFilter для удаления любых апострофов - в зависимости от вашего варианта использования и токенизатора вы можете использовать версию CharFilter, так как она обрабатывает текст до его разделения на несколько токенов.
Ваш второй случайпрямой фильтр синонимов или WordDelimiterFilter, в котором вы расширяете JPMorgan до «JP Morgan» или используете WordDelimiterFilter для расширения изменений регистра в отдельные токены.Это также позволит вам искать JP
и получать JPMorgan
связанных записей.Они могут по-разному влиять на оценку, используйте debugQuery=true
, чтобы точно увидеть, как каждый термин в вашем запросе влияет на оценку.
Третий случай, как правило, такой же, как и второй.Вам нужно будет создать приличный список синонимов для используемых терминов, и обычно это то, что вы создаете, когда получаете отзывы от своих пользователей, из существующих словарей и из области знаний.Существует также возможность предварительной обработки текста с использованием NLP, или в этом случае что-то столь же примитивное, как может помочь индексация инициалов любых заглавных слов после друг друга.