我有很多配对字段(hoursDistance1,cityName1,hoursDistance2,cityName2,hoursDistance3,cityName3等)。Zend Lucene搜索相关字段?
我需要什么样的查询来搜索,以便Lucene基于两个字段的分数具有正确的词汇而不是其中的一个?即如果我从这里用这个名称在3个小时内搜索一个城市,我如何得到它返回的结果,其中hoursDistanceN距离这里3小时,并且cityNameN是否不计分其他字段对?
我有很多配对字段(hoursDistance1,cityName1,hoursDistance2,cityName2,hoursDistance3,cityName3等)。Zend Lucene搜索相关字段?
我需要什么样的查询来搜索,以便Lucene基于两个字段的分数具有正确的词汇而不是其中的一个?即如果我从这里用这个名称在3个小时内搜索一个城市,我如何得到它返回的结果,其中hoursDistanceN距离这里3小时,并且cityNameN是否不计分其他字段对?
您可以为每一对的文档。因此,而不是
id | hours1 | name1 | hours2 | name2 | ...
你必须:
id | pair_num = 1 | hours | name
id | pair_num = 2 | hours | name
...
由于您只想在一次搜索一对,你不应该需要将结果合并在一起,或任何东西。
IIUC,您可以通过非规范化数据做到这一点: 每对领域,例如 的创建一个Lucene文档如果:
hoursDistance1=3,cityName1=London
与字段创建一个文件:
hoursDistance=3,cityName=London,pairIndex=1
然后运行就像一个查询:
hoursDistance=5 AND cityName=Leeds
为每组配对创建文档是不可能的,因为它们是位置文档的一部分,每对字段都相对于位置。 – 2010-11-16 14:32:47
我相信你需要进一步解释这一点。你是如何创造这些领域的?也许使用空间搜索模块更好。 – 2010-11-16 18:14:15