/ / Как да съхранявате низове за оптимизиране на търсенето - c #, sql-сървър, търсене, string-алгоритъм

Как да съхранявате низове за оптимизиране на търсенето - c #, sql-сървър, търсене, string-алгоритъм

Имам таблица, съдържаща колона от типVARCHAR. Искам да търся низове в колоната според потребителската заявка за въвеждане. Искам да приложа приблизителното търсене. А в таблицата ми има лакони от записи. Има няколко начина, по които мисля, че мога да осъществя търсенето.

  1. Заредете всички записи в C # и приложете алгоритъм за търсене върху него. (Но тя ще консумира твърде много памет.)

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

Сигурен съм, че ще има друг механизъм за внедряване на тази функционалност или някаква техника за съхраняване на данни, така че да мога да я търся по-бързо.

Може ли някой да ми даде по-добра представа за това?

Отговори:

3 за отговор № 1

Lucene е един от най-добрите начини за търсене. Все още можете да запазите низа в базата данни, но да създадете индекс на Lucene от него и след това да го използвате за търсене.


2 за отговор № 2

SQL Server има вградена функционалност, за да направи точно това, което търсите, което се нарича Full Text Search.

Преглед от Microsoft тук: http://msdn.microsoft.com/en-us/library/ms142571.aspx

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

Когато искате да търсите, езикът на заявката е различен от "нормалния" текст.

Пълното търсене в текстовете е дори налице в безплатната версия на "SQL Server 2008 Express с разширени услуги", така че цената вече не е проблем.