Есть ли способ сопоставить анализатор с типами запросов (фраза, диапазон), аналогично тому, как мы делаем это с помощью Analyzer для имен полей?
Я хочу поддерживать точное совпадение в случае поиска по фразе и выполнять поиск по даже основанным на словах словам, если это не поиск по фразе. Во время индексации я индексирую как исходный токен, так и токен-стем в одной и той же позиции.
Рассмотрим следующий случай:
document1 : feature flipping
document2 : feature flip
Жетоны, сгенерированные на этапе индексации:
document1 : feature featur flipping flip
document2 : feature featur flip
feature & featur находятся в той же позиции, а флип и флип - в одной позиции
Когда я выполняю поиск по фразе, запрос «смена фича» генерируется
Your Query: +matchAllDocs:true +(alltext:("feature flipping"))
Lucene's: +matchAllDocs:true +alltext:"(feature featur) (flipping flip)"
И это возвращает оба документа. Есть ли способ вернуть только точное совпадение (документ 1)? Я подумал, что если можно сопоставить анализаторы с типами запросов, то я пропущу запросы фраз из stemFilter.
UPDATE
https://issues.apache.org/jira/browse/LUCENE-2892 - это то, что я ищу.
Спасибо