Zend Lucene поиск связанных полей? - PullRequest
0 голосов
/ 16 ноября 2010

У меня много парных полей (hoursDistance1, cityName1, hoursDistance2, cityName2, hoursDistance3, cityName3 и т. Д.).

Какой запрос мне нужно искать, чтобы результаты Lucene основывались на том, что оба поля имеют правильные термины вместо одного из них? то есть, если я ищу город через 3 часа с этим именем, как мне получить его, чтобы он возвращал результаты, где hoursDistanceN через 3 часа отсюда И cityNameN это без учета других пар полей?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Вы можете создать документ для каждой пары.Поэтому вместо

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

у вас будет:

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

Поскольку вы хотите искать только одну пару за раз, вам не нужно объединять результаты вместе или что-то еще.

0 голосов
/ 16 ноября 2010

IIUC, вы можете сделать это путем денормализации ваших данных: создайте документ Lucene для каждой пары полей, например, если:

hoursDistance1=3,cityName1=London

создайте документ с полями:

hoursDistance=3,cityName=London,pairIndex=1

А затем выполните запрос вроде:

hoursDistance=5 AND cityName=Leeds
...