2012-09-29 96 views
0

数据库:Lucene是否支持在多个索引文件之间搜索?

我有两个表。每个表格中有三列。 表-A(column_primaryKey_A,column_A1,column_A2) 表-B(column_primaryKey_B,column_B1,column_B2)

下面是SQL,我想使用Lucene的事: 选择 * FROM表-A,表-B WHERE column_primaryKey_A = column_primaryKey_B column_A1 = XX AND column_B1 = XX

我要创建两个索引文档(Index_Table_A,Index_Table_A)和我该如何使用Lucene或Hibernate Search的机制来实现上述事情?

任何帮助将感恩!

回答

1

我不知道为什么你需要索引或为什么你想首先使用lucene,但我可以告诉你如何使用一个索引来实现它。 (使用两个指标是可能的,但显著较少的性能)

使用一个索引,索引的文件如下:

title = column_primaryKey_A 
column_A1 = val... 
column_A2 = val2... 
column_B1 = val3... 
column_B2 = val4... 

当搜索你想使用现场查询一个连词查询如下

query = (column_A1:XX) AND (column_B1:XX) 

关于lucene查询语法,您可以找到更多信息here

编辑:另一种选择包括两个搜索可能不太表演: 你可以有第一列收集所有相应的职称(ID的)第一搜索,并将其添加到第二个查询(第二列):

Query: (Column_B1:XX) AND (id1 OR id2 OR ...) 

其中Id是从第一次搜索中收集的结果。

+0

所有字段索引到一个文件,是你的意思?但我想将这些字段索引到两个文档中,而不是一个文档。并根据这两个文档的条件进行查询。就像:SELECT * FROM Table_A,Table_B WHERE column_primaryKey_A = column_primaryKey_B AND column_A1 = XX AND column_B1 = XX – Jonathan

+0

不,您应该为每列指定单独的字段。这样你会达到相同的结果(据我了解你的问题)。 据我所知,没有办法搜索独立文档的依赖关系,你可以做两个依赖搜索(我将编辑我的答案)。 – dolbi