2010-11-16 134 views
0

我有很多配对字段(hoursDistance1,cityName1,hoursDistance2,cityName2,hoursDistance3,cityName3等)。Zend Lucene搜索相关字段?

我需要什么样的查询来搜索,以便Lucene基于两个字段的分数具有正确的词汇而不是其中的一个?即如果我从这里用这个名称在3个小时内搜索一个城市,我如何得到它返回的结果,其中hoursDistanceN距离这里3小时,并且cityNameN是否不计分其他字段对?

回答

2

您可以为每一对的文档。因此,而不是

id | hours1 | name1 | hours2 | name2 | ... 

你必须:

id | pair_num = 1 | hours | name 
id | pair_num = 2 | hours | name 
... 

由于您只想在一次搜索一对,你不应该需要将结果合并在一起,或任何东西。

0

IIUC,您可以通过非规范化数据做到这一点: 每对领域,例如 的创建一个Lucene文档如果:

hoursDistance1=3,cityName1=London 

与字段创建一个文件:

hoursDistance=3,cityName=London,pairIndex=1 

然后运行就像一个查询:

hoursDistance=5 AND cityName=Leeds 
+0

为每组配对创建文档是不可能的,因为它们是位置文档的一部分,每对字段都相对于位置。 – 2010-11-16 14:32:47

+0

我相信你需要进一步解释这一点。你是如何创造这些领域的?也许使用空间搜索模块更好。 – 2010-11-16 18:14:15