当我们使用winform通过lucene.net索引数据时,请考虑说10个相同的win应用程序正在办公室中运行并且它们都是索引数据。如果索引段文件是在每个PC中创建的那么它将是问题,或者我们可以在任何集中式PC中创建但是当该PC突然从网络不可用时会出现问题。所以我想知道我们可以在sql server中存储lucene.net索引以进行集中访问。如果可能请指导我。我搜索很多在sql server中存储lucene.net索引,但没有找到。我有一篇关于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#
所以请任何人指导我如何在lqlne中存储lucene索引。
感谢
答案 0 :(得分:1)
可以创建自定义Directory
,但这非常痛苦。我见过几个项目尝试过这个并且失败了。
您的方法的显示停止是IndexWriter
假定它只能访问目录。因此,让多台机器将文档写入同一目录是有缺陷的,并且会破坏许多假设。
最好的方法是将Lucene视为数据库。你不会期望许多机器都直接写入db的文件。这就是客户与之交谈的服务(SQL Server,MySql,Postgres等)的原因。
记住Lucene只是一个图书馆而不是"产品"。 您需要的是一台带有api的服务,供机器与您交谈。
其他地方已经提到过ElasticSearch,而且非常很好。强烈建议您调查一下。冗余,速度,最新功能等(是的,它确实需要JVM,更准确地说是JRE。如果仔细观察,有一个下载/安装程序也不安装crapware)。
编写一个自助托管ASP.net WebAPI并包装Lucene的服务也非常简单。创建一个与之对话的客户端也很容易。只是HttpClient
的包装。 (我已经多次这样做了。让POC工作只需要一两天。但是魔鬼的细节很多。)