Как хранить строки для оптимизации поиска - PullRequest
1 голос
/ 09 августа 2011

У меня есть таблица, содержащая столбец типа VARCHAR. Я хочу искать строки внутри столбца в соответствии с запросом ввода пользователя. Я хочу реализовать Приблизительный поиск. И моя таблица содержит лаки записей. Я думаю, что я могу реализовать поиск несколькими способами.

  1. Загрузить все записи в C # и применить алгоритм поиска к нему. (Но он будет занимать слишком много памяти.)

  2. Извлекает записи по отдельности или в некотором предопределенном размере партии и применяет алгоритм поиска к нему. (Но это быстро установит соединение с базой данных, что может снизить производительность.)

Я уверен, что будет какой-то другой механизм для реализации этой функциональности или какой-либо метод хранения данных, чтобы я мог быстрее их искать.

Кто-нибудь может дать мне лучшую идею для реализации этого?

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

Lucene - один из лучших способов поиска. Вы все еще можете хранить свою строку в базе данных, но построить из нее индекс Lucene, а затем использовать его для поиска.

2 голосов
/ 09 августа 2011

SQL Server имеет встроенную функциональность для выполнения именно того, что вам нужно, он называется полнотекстовым поиском.

Обзор от Microsoft здесь: http://msdn.microsoft.com/en-us/library/ms142571.aspx

Общееконцепция заключается в том, что вы сообщаете SQL Server, какие таблицы / столбцы содержат текст с возможностью поиска, и он создает эффективные для полноты и запроса "полнотекстовые индексы";эти индексы создаются асинхронно (поэтому ваши обновления / вставки не замедляются), а начиная с SQL Server 2005 они хранятся в вашей базе данных (например, в резервных копиях), поэтому ими легко управлять.

Когда вы хотитедля поиска язык запросов отличается от «обычного» сопоставления текста.

Полнотекстовый поиск доступен даже в бесплатной редакции «SQL Server 2008 Express с расширенными службами», поэтому стоимость больше не является проблемой.

...