2011-08-11 54 views
0

我在我的数据库三个表:Lucene索引多个表

表:查询 板块 - > queryID,查询

表:关键字 Fileds-> keyid的,关键字

表: queryTag 提交 - > queryID,keyID 该表具有前两张表的外键

现在我想创建一个索引Lucene这样,当我搜索一个特定的关键字,我能够从查询表中检索相应的查询。我正在考虑从以下查询结果中创建索引:

从查询中选择queryTag.queryID,queries.query,keywords.keyword,queryTag.keyID,queryTag,其中queryTag.queryID = queries.queryID的关键字和queryTag.keyID = keywords.keyID

你认为这是正确的做法吗? 以及当我使用这个aproach时,我的Lucene文档中将没有唯一字段,因为查询和关键字有多对多的关系。是否会影响搜索?

回答

0

构建一个没有主键的lucene索引是可能的,但不是在每种情况下都是一个好主意。例如分布式搜索或添加新文档(增量)将不起作用。所以你必须从零开始创建你的索引,每次你添加新的数据。 http://wiki.apache.org/solr/UniqueKey

所以它是更好的方式来生成您的SQL语句的唯一的字段(例如通过连接现有油田一)

如何访问Lucene索引?用你的Java应用程序?如果您使用的是像solr这样的“代理”,则可以使用该“代理”中的dataimport-mechanism。例如,solr提供了数据导入处理程序,它允许您定义一条SQL语句(如您的)。 Solr在您的数据库执行此语句并将结果集插入到lucene索引中。