2

我正在研究使用Lucene和/或Solr在 RDBMS 驱动的 Web 应用程序中提供搜索。对我来说不幸的是,我浏览的所有文档都涉及如何从索引中获取数据。我更关心如何建立一个有用的索引。这样做有什么“最佳实践”吗?

4

4 回答 4

2

多个应用程序会写入数据库吗?如果是这样,那就有点棘手了;您必须有一些机制来识别新记录以提供给 Lucene 索引器。

要考虑的另一点是您想要一个涵盖所有表的索引,还是每个表一个索引。一般来说,我推荐一个索引,该索引中有一个字段来指示记录来自哪个表。

如果您想搜索持久对象而不是非结构化文档, Hibernate支持全文搜索。

您应该了解一个名为Compass的 OpenSymphony 项目。我自己一直远离它,主要是因为它似乎比搜索需要的复杂得多另外,从文档中我可以看出(我承认我没有时间阅读所有内容),它将 Lucene 段作为 blob 存储在数据库中。如果您熟悉 Lucene 架构,Compass 在数据库之上实现了一个 Lucene Directory。我认为这是错误的做法。我将利用数据库对索引的内置支持并实现 Lucene IndexReader。同样的批评适用于分布式缓存实现等。

于 2008-11-17T19:05:41.367 回答
2

我根本没有探索过这个,但是看看LuSql

使用 Solr 也很简单,但是Solr schema.xml 和您的实际数据库架构会出现一些DRY违规。(仅供参考,Solr 确实支持通配符。)

于 2008-11-17T22:12:30.833 回答
1

作为介绍:

Brian McCallister 写了一篇不错的博客文章:Using Lucene with OJB

于 2008-11-17T19:04:39.340 回答
1

我们今晚将推出我们的第一个使用 Solr 的应用程序。在 Solr 1.3 中,它们包含了 DataImportHandler,它允许您指定数据库表(它们称为实体)及其关系。定义后,一个简单的 HTTP 请求将触发数据的导入。

有关详细信息,请查看DataImportHandler 的 Solr wiki 页面

于 2008-11-20T02:37:39.487 回答