Мы используем полнотекстовую индексацию SQL Server здесь при переполнении стека, и она работает достаточно хорошо - но я могу только рекомендовать ее для 2005 и 2008 годов, в тех версиях, на которых мы ее используем. Я слышал, что намного хуже в 2000 году. Есть причуды (списки стоп-слов и т. Д.), Но ничего серьезного. Это быстро и делает то, что говорит на банке, в основном.
Проблема, с которой вы сталкиваетесь с contains()
и freetext()
, заключается в том, что пользователи часто ожидают выполнить поиск на уровне "всей страницы", например, в Google , где все, что записывается на страницу / экран, является для поиска. Это не совсем то, как работают базы данных, но пользователи не заботятся об этом. Они заботятся о результатах и имеют (возможно, разумные) ожидания, основанные на многолетнем поиске в сети.
Если вы ожидаете, что вам понадобится уровень поиска "целая страница", я настоятельно рекомендую посмотреть Google Search API или Lucene.NET (если вы Стек Microsoft, основанный на использовании SQL).