Как да създадете lucene.net индекс в база данни

когато използваме winform за индексиране на данни чрез lucene.net, тогава помислете, че 10 едни и същи win приложения работят в офис и всички те индексират данни. ако индексният сегментен файл е създаден във всеки компютър, това ще бъде проблем или можем да създадем във всеки централизиран компютър, но проблемът възниква, когато този компютър внезапно стане недостъпен от мрежата. така че искам да знам, можем ли да съхраняваме индекс на lucene.net в sql сървър за централизиран достъп. ако е възможно, моля, насочете ме. Търся много за съхраняване на индекс lucene.net в sql сървър, но не намерих нищо. Получих статия за Java и видях, че е възможно. ето връзката http://kalanir.blogspot.in/2008/06/creating-search-index-in-database.html

те казаха Lucence contains the JdbcDirectory interface for this purpose, но аз работя with lucene.net & c# така че, моля, някой да ме напътства как да направя възможно съхраняването на lucene индекс в sql сървър.

Благодаря


person Thomas    schedule 14.07.2014    source източник
comment
Ами ако сървърът, изпълняващ sql сървър, внезапно стане недостъпен? Все още ли нямате този проблем?   -  person Davin Tryon    schedule 14.07.2014
comment
Използвайте Solr   -  person EZI    schedule 14.07.2014
comment
Или ElasticSearch   -  person Jesse C. Slicer    schedule 14.07.2014
comment
Solr и ElasticSearch изискват инсталиране на JVM. Може да го обмисля, ако спрат да пускат рекламен софтуер с него.   -  person Kasey Speakman    schedule 18.05.2016


Отговори (1)


Възможно е да създадете персонализиран Directory, но е доста болезнено. Виждал съм няколко проекта да опитват това и да се провалят.

Препятствието за вашия подход е, че IndexWriter приема, че има единствен достъп до Директорията. Така че наличието на множество машини, записващи документи в една и съща директория, е погрешно и ще наруши много предположения.

Най-добрият подход е да се третира Lucene като база данни. Не бихте очаквали много машини да пишат директно във файлове на db. Ето защо има услуга, с която клиентите говорят (SQL Server, MySql, Postgres и т.н. и т.н.).

Не забравяйте, че Lucene е просто библиотека, а не "продукт". Това, от което се нуждаете, е услуга с api, с която машините да говорят.

ElasticSearch е споменат другаде и е много добър. Силно препоръчваме да го разгледате. Излишък, скорост, най-нови функции и т.н. (да, изисква JVM, по-точно JRE. Ако погледнете внимателно, има програма за изтегляне/инсталиране, която също не инсталира crapware).

Също така е доста лесно да се напише услуга, която самостоятелно хоства ASP.net WebAPI и обгръща Lucene. Създаването на клиент, който говори с него, също е доста лесно. Само обвивка около HttpClient. (Правил съм това няколко пъти. Задействането на POC трябва да отнеме само ден или два. Но дяволът е в детайлите.)

person AndyPook    schedule 24.01.2017