0

我有很多配对字段(hoursDistance1、cityName1、hoursDistance2、cityName2、hoursDistance3、cityName3 等)。

我需要搜索什么查询,以便 Lucene 根据具有正确术语的两个字段而不是其中一个来评分?即,如果我用这个名字搜索距离这里 3 小时的城市,我如何让它返回距离这里 3 小时的 hoursDistanceN 和 cityNameN 的结果而不对其他字段对进行评分?

4

2 回答 2

2

您可以为每一对创建一个文档。所以而不是

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

你将会拥有:

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

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

于 2010-11-17T00:38:15.290 回答
0

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

hoursDistance1=3,cityName1=London

创建包含以下字段的文档:

hoursDistance=3,cityName=London,pairIndex=1

然后运行如下查询:

hoursDistance=5 AND cityName=Leeds
于 2010-11-16T13:51:52.130 回答