我有很多配对字段(hoursDistance1、cityName1、hoursDistance2、cityName2、hoursDistance3、cityName3 等)。
我需要搜索什么查询,以便 Lucene 根据具有正确术语的两个字段而不是其中一个来评分?即,如果我用这个名字搜索距离这里 3 小时的城市,我如何让它返回距离这里 3 小时的 hoursDistanceN 和 cityNameN 的结果而不对其他字段对进行评分?
我有很多配对字段(hoursDistance1、cityName1、hoursDistance2、cityName2、hoursDistance3、cityName3 等)。
我需要搜索什么查询,以便 Lucene 根据具有正确术语的两个字段而不是其中一个来评分?即,如果我用这个名字搜索距离这里 3 小时的城市,我如何让它返回距离这里 3 小时的 hoursDistanceN 和 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