Взвешенные синонимы

#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.

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