是否有一组从关系数据库构建Lucene索引的最佳实践?

时间:2008-11-17 18:07:30

标签: lucene solr rdbms

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

4 个答案:

答案 0 :(得分:2)

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

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

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

有一个名为Compass的OpenSymphony项目,你应该知道。我自己也远离它,主要是因为它似乎比搜索需要的更强大方式。另外,正如我从文档中可以看出的那样(我承认我没有找到所有必要的时间来阅读它),它将Lucene段存储为数据库中的blob。如果您熟悉Lucene体系结构,Compass会在数据库之上实现Lucene目录。我认为这是错误的做法。我会利用数据库的内置支持来编制索引并实现Lucene IndexReader。同样的批评也适用于分布式缓存实现等。

答案 1 :(得分:2)

我根本没有探究过这个问题,但请看一下LuSql

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

答案 2 :(得分:1)

作为介绍:

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

答案 3 :(得分:1)

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

请查看the Solr wiki page for DataImportHandler了解详情。