Мы используем Lucene в нашей платформе электронной коммерции, и мы на 100% удовлетворены этим. До этого у нас была функция поиска, которая просто запрашивает базу данных, и это решение оказалось неприемлемым по ряду причин:
Это не так быстро, поэтому мы не могли представить себе функциональность, подобную "Google Instant Search" (которую мы реализовали после перехода на решение на основе Lucene).
Как только пользовательские запросы стали более сложными (например, применяя множественные критерии / фильтры поиска), стало довольно сложно поддерживать время отклика относительно небольшим (а размер и сложность операторов SQL повышались чрезвычайно).
Мы ввели наши собственные (или повторно реализованные существующие) алгоритмы ранжирования, чтобы результаты поиска могли «совпадать» с тем, что на самом деле имел в виду пользователь.
Я не говорю, что подход на основе баз данных всегда плох для таких вещей (скорее всего, это просто плохой дизайн).
Также я всегда имею в виду эту знаменитую фразу: «Никогда не стоит недооценивать важность поста». У вас сейчас может быть 8 тыс. Записей, но вы не уверены на 100%, как ваша система будет развиваться с течением времени. Через год ваши клиенты будут запрашивать более расширенные функциональные возможности, чем простой текстовый поиск + ваша база данных вырастет до миллионов записей. Подумайте об этом, прежде чем разрабатывать свою поисковую инфраструктуру, иначе вам, вероятно, придется полностью переписать ее.
P.S. Вот пример использования средства проверки орфографии для Lucene: Функция «Вы имели в виду?» В Lucene.net .