【问题标题】:Lucene index over multiple tables多个表上的 Lucene 索引
【发布时间】:2011-08-11 03:00:28
【问题描述】:

我的数据库中有三个表:

表:查询 字段->queryID,query

表格:关键字 归档->keyID,keyword

表:查询标签 Fileds->queryID,keyID 此表具有前 2 个表的外键

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

从查询中选择queryTag.queryID,queries.query,keywords.keyword,queryTag.keyID,queryTag,keywords where queryTag.queryID=queries.queryID and queryTag.keyID=keywords.keyID

您认为这是正确的方法吗? 而且当我使用这种方法时,我的 Lucene 文档中将没有唯一字段,因为查询和关键字具有多对多关系。这会影响搜索吗?

【问题讨论】:

    标签: join lucene full-text-search indexing


    【解决方案1】:

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

    因此,这是在 sql 语句中生成唯一字段的更好方法(例如,通过将现有字段连接到一个字段)

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

    【讨论】:

      猜你喜欢
      • 2010-09-20
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      相关资源
      最近更新 更多