У меня есть индекс Lucene, который заполняет базу данных. Я сохраняю / индексирую некоторые поля, а затем добавляю поле FullText, в котором я индексирую содержимое всех других полей, чтобы я мог выполнить общий поиск.
Теперь допустим, у меня есть документ со следующими двумя полями:
fld1 - «Samsung выпускает новый 22-дюймовый ЖК-экран»
fld2 - "Батареи телефона Sony Ericsson взрываются"
Если пользователь делает «телефон Samsung», он, вероятно, просто хочет получить новости о телефонах Samsung, не документ с информацией об экране Samsung и телефоне Sony, но поиск по полю FullText, я получу это как действительное результат.
Есть хороший способ справиться с этим?
Я думал об индексации с использованием некоторого разделителя и создании SpanNotQuery, поэтому в поле FullText будет содержаться следующее:
«Samsung выпускает новый 22-дюймовый ЖК-экран. MYLUCENESEPARATOR. Аккумуляторы телефона Sony Ericsson разрываются», а затем выполняются запросы SpanNotQuery с MYLUCENESEPARATOR в качестве бездействия
Это хорошее решение? Хорошо ли оно масштабируется с более чем двумя терминами? Я боюсь, что это будет убийца производительности. Есть ли лучший способ добиться этого?