#lucene #synonym
#lucene #синоним
Вопрос:
Я использую синонимы в lucene, чтобы увеличить отзыв при поиске. Для этого я создаю карту синонимов и использую SynonymGraphFilter в моем пользовательском анализаторе. Карта синонимов выглядит следующим образом:
vw -> фольксваген
bmw -> bayerische motoren werke
Я использую QueryParser для анализа запроса.
Теперь я хотел бы снизить наддув для терминов-синонимов (например, если я ищу «bmw», тогда термины «bayerische motoren werke» должны иметь меньшее повышение)
Как я могу этого добиться? Кажется, что Lucene поддерживает это (см. https://issues.apache.org/jira/browse/LUCENE-9171 ) однако я не знаю, как им пользоваться.
Ответ №1:
Здесь существует два разных подхода к обработке синонимов:
(1) Ваше использование SynonymMap
, которое, как вы заметили, является способом предварительного построения списков синонимов, которые затем могут использоваться в анализаторах и общих запросах.
(2) Улучшение, о котором вы упоминаете.
Как отмечается в билете на улучшение,«это было сделано для запроса синонимов»..
У SynonymQuery
класса есть конструктор, который позволяет добавлять термины (как синонимы) со значением boost.
Я не верю, что существует какой-либо прямой способ объединить два подхода. Карты синонимов не поддерживают повышение. Я думаю, лучшее, что вы можете сделать, это перебрать ваш заранее определенный список синонимов и ввести значения в конструктор запросов синонимов.