Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Конфигурирайте Lucene.Net със SQL Server

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

Използвах lucene.net като общ индексатор на база данни, така че това, което получих обратно, бяха основно идентификаторите на DB (към индексирани имейл съобщения), и също така го използвах, за да получа обратно достатъчно информация, за да попълвам резултати от търсене или нещо подобно, без да докосвам база данни. Работи чудесно и в двата случая, въпреки че SQL може да стане малко бавен, тъй като почти трябва да получите идентификационен номер, да изберете идентификатор и т.н. Заобиколихме това, като направихме временна таблица (само с идентификационния ред в нея) и групово вмъкване от файл (който е изходът от lucene), след което се присъединява към таблицата със съобщения. Беше много по-бързо.

Lucene не е перфектен и трябва да мислите малко извън полето на релационната база данни, защото НАПЪЛНО не е такъв, но е много, много добър в това, което прави. Заслужава си да се разгледа и, казаха ми, няма проблемите „упс, съжалявам, трябва да изградите отново индекса си“, каквито прави FTI на MS SQL.

Между другото, имахме работа с 20-50 милиона имейла (и около 1 милион уникални прикачени файлове), общо около 20 GB луценов индекс според мен и 250+GB SQL база данни + прикачени файлове.

Производителността беше меко казано фантастична - просто се уверете, че мислите и настройвате вашите фактори за сливане (когато слива индексни сегменти). Няма проблем да имате повече от един сегмент, но може да възникне ГОЛЯМ проблем, ако се опитате да обедините два сегмента, които имат по 1 mil елемента във всеки, и имате наблюдателна нишка, която убива процеса, ако отнеме твърде дълго... .. (да, това ни рита задника за известно време). Така че поддържайте максималния брой документи за нещо НИСКО (т.е. не го задавайте на maxint, както направихме ние!)

РЕДАКТИРАНЕ Кори Трейджър документира как да използвате Lucene.NET в BugTracker.NET тук.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Моментни снимки на базата данни на SQL Server -3

  2. Настройка на SQL Server – всичко е за измерване

  3. Как да предадете нулева променлива към SQL съхранена процедура от C#.net код

  4. Грешка на SQL Server - HRESULT E_FAIL е върнат от повикване към COM компонент

  5. Съхранение на двоични типове данни в SQL Server