【问题标题】:Using Lucene with database data使用 Lucene 处理数据库数据
【发布时间】:2012-03-30 10:13:10
【问题描述】:

我刚开始学习 Lucene,我知道它在搜索文档等方面非常有用,但是有人用它来搜索数据库数据吗?

例如,

我需要进行基于两个字段(“描述”、“消息”)搜索关键字的搜索。

为此,我需要编写一个 sql 查询来返回所有描述行和所有消息行(可能是数万行),然后从中创建索引并搜索索引。

我的理解正确吗?我首先必须从数据库中获取所有可能很大的数据。

【问题讨论】:

  • 为什么不在你的 sql 数据库中对这些字段使用全文搜索,而对你的文档使用 Lucene,这就是预期的用途。否则你需要转储数据。

标签: search lucene full-text-search lucene.net


【解决方案1】:

如果可以(我的意思是如果你愿意使用任何东西),那么试试 Solr。它内置了对使用数据导入处理程序索引数据库内容的支持。我正在使用它来索引数据库中超过 10 亿行的全文数据。

【讨论】:

  • 你有这个网站链接吗?网站名称似乎与他们的产品无关
【解决方案2】:

你的理解是正确的。

您必须根据您指定的集合为 Lucene 创建一个索引。 我会推荐 Luke 查看您创建的索引。

我有一个警告,为什么全文搜索最终会更好—— 每次更新值时,您都必须更新数据库外部的 Lucene 索引。这是我不想处理的开销,最终放弃了这种方法。

FTS 给了我同样好的结果,至少对于我的需要,你的可能会有所不同。

【讨论】:

  • 是的,这也是我关心的问题。它不是搜索数据,它只是获取可能存在问题的数据。我只是想弄清楚在这种情况下数据检索是否会消除使用 Lucene 的任何好处。我目前没有太多数据,但很高兴知道未来。
  • 在深入研究之后,我可能会使用 mssql 2008 内置的全文搜索功能。它带有非索引字表和词组搜索功能,而且速度应该很快。我认为对于这个应用程序,Lucene 可能是矫枉过正。如果我使用 Lucene,我可能会每隔几个小时重建一次索引。
  • 只是一个简单的说明,你不需要每次都重建索引,你可以更新它。 Lucene 也为此提供了近乎实时的功能。但如果你的数据量小,查询简单,SqlServer FTS 可能更适合你的需求
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多