我正在研究使用Lucene和/或Solr在基于RDBMS的Web应用程序中提供搜索。对我来说不幸的是,我浏览过的所有文档都涉及如何从索引中获取数据;我更关心如何构建有用的索引。这样做有什么“最佳实践”吗?
答案 0 :(得分:2)
多个应用程序是否会写入数据库?如果是这样,那有点棘手;你必须有一些机制来识别要提供给Lucene索引器的新记录。
要考虑的另一点是,您希望一个索引覆盖所有表,还是每个表一个索引。一般来说,我推荐一个索引,在该索引中有一个字段来指示记录来自哪个表。
Hibernate支持全文搜索,如果您想搜索持久对象而不是非结构化文档。
有一个名为Compass的OpenSymphony项目,你应该知道。我自己也远离它,主要是因为它似乎比搜索需要的更强大方式。另外,正如我从文档中可以看出的那样(我承认我没有找到所有必要的时间来阅读它),它将Lucene段存储为数据库中的blob。如果您熟悉Lucene体系结构,Compass会在数据库之上实现Lucene目录。我认为这是错误的做法。我会利用数据库的内置支持来编制索引并实现Lucene IndexReader。同样的批评也适用于分布式缓存实现等。
答案 1 :(得分:2)
答案 2 :(得分:1)
作为介绍:
Brian McCallister写了一篇不错的博文:Using Lucene with OJB。
答案 3 :(得分:1)
我们正在推出今晚使用Solr的第一个应用程序。使用Solr 1.3,它们包含了DataImportHandler,它允许您指定数据库表(它们称为实体)及其关系。一旦定义,一个简单的HTTP请求就会导致数据导入。