Как Zend Lucene обрабатывает поиск по числовому диапазону? - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть эти поля в индексе

id    name                   genders          ages
1     "John Doe and Co."     "male male"      "18 20" 
2     'Mr. and Mrs. Joe Dee' "male female"    "25 27"

, и вот код для извлечения обеих строк

$min_age = '19'
$max_age = '26';

$ages_query = new Zend_Search_Lucene_Search_Query_Range(new Zend_Search_Lucene_Index_Term($min_age, 'ages'), new Zend_Search_Lucene_Index_Term($max_age, 'ages'), TRUE);

$lucene_query = new Zend_Search_Lucene_Search_Query_Boolean();
$lucene_query->addSubquery($ages_query, null);

Я возвращаю только вторую строку.Почему я не получил первую строку, когда она явно должна быть возвращена на основе запроса диапазона?

1 Ответ

0 голосов
/ 15 декабря 2011

Это неправильный формат для поля возрастов, вы должны разбить на два поля

age_from : 18
age_to   : 20

Запрос: -

 +age_from:[19 TO *]
 +age_to:[* TO 26 *]

Я не уверен, что вы относились к этому вопросу или нет: Zend Lucene и поиск диапазона по полю с несколькими значениями

Но идея в том, чтобы не хранить CSV в люцене.

...