Я проголосую за Lucene . Хотя SQL Server обеспечивает полнотекстовое индексирование и некоторые возможности поиска, он не является лучшей поисковой системой. По моему опыту, он не дает лучших результатов или ранжирования результатов, пока у вас не будет значительного объема проиндексированных элементов (минимум от десятков тысяч до сотен тысяч).
Напротив, Lucene явно является поисковой системой. Это перевернутый индекс, ведущий себя так же, как и ваш обычный поисковый движок в Интернете. Lucene предоставляет очень богатую платформу для индексирования и поиска, а также некоторые богатые C # и .NET API для запросов к индексам. Существует даже поставщик LINQ to Lucene, который позволит вам запрашивать индекс Lucene с помощью LINQ.
Единственным недостатком использования Lucene является то, что вам нужно создать индекс, который является побочным процессом, который выполняется независимо от базы данных. Вы также должны написать свой собственный инструмент для управления индексом. Ваш поисковый индекс, в зависимости от того, как часто вы его обновляете, может не обновляться на 100%. Как правило, это не является серьезной проблемой, но если у вас есть ресурсы, то индекс Lucene должен постепенно обновляться каждые несколько минут, чтобы все оставалось «свежим».