Как создать индекс 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 Server, внезапно недоступен? У вас еще нет этой проблемы?   -  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 как с базой данных. Вы не ожидаете, что многие машины будут писать напрямую в файлы базы данных. Вот почему существует служба, с которой общаются клиенты (SQL Server, MySql, Postgres и т. д. и т. д.).

Помните, что Lucene — это просто библиотека, а не «продукт». Что вам нужно, так это сервис с API для общения машин.

ElasticSearch уже упоминался в другом месте, и он очень хорош. Настоятельно рекомендуется изучить его. Избыточность, скорость, новейшие функции и т. д. (да, для этого требуется JVM, точнее JRE. Если вы внимательно посмотрите, есть загрузка/установщик, который также не устанавливает дерьмовое ПО).

Также довольно просто написать службу, которая самостоятельно размещает ASP.net WebAPI и обертывает Lucene. Создать клиента, который с ним разговаривает, также довольно просто. Просто обертка вокруг HttpClient. (Я делал это несколько раз. Чтобы заставить POC работать, нужно всего день или два. Но дьявол кроется в деталях.)

person AndyPook    schedule 24.01.2017