Как Zend Lucene обрабатывает поиск по числовому диапазону?
У меня есть эти поля в индексе
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 ответ
Решение
Это неправильный формат для поля возрастов, вы должны разбить на два поля
age_from : 18
age_to : 20
Запрос:-
+age_from:[19 TO *]
+age_to:[* TO 26 *]
Я не уверен, что вы имели отношение к этому вопросу или нет: Zend Lucene и диапазон поиска по полю с несколькими значениями
Но идея не хранить CSV в lucene.