Zend Lucene - поиск в пределах досягаемости
У меня есть следующий код для создания индекса Zend Lucene
$doc->addField(Zend_Search_Lucene_Field::UnStored('keywords', $job->getKeywords()));
$doc->addField(Zend_Search_Lucene_Field::UnStored('title', $job->getTitle()));
$doc->addField(Zend_Search_Lucene_Field::UnStored('region', $job->getRegion()));
$doc->addField(Zend_Search_Lucene_Field::keyword('minSalary', $minSalary));
$doc->addField(Zend_Search_Lucene_Field::keyword('maxSalary', $maxSalary));
$doc->addField(Zend_Search_Lucene_Field::UnStored('type', $job->getType()));
и мой поисковый запрос
$query = 'minSalary:[0 TO 20000]';
Здесь я пытаюсь получить все задания, minSalary которых равно или меньше 20000. Но в результате я получаю задания со следующими значениями minSalary
110000
100000
20000
10000
Может кто-нибудь советовать по этому поводу?
Спасибо б
1 ответ
Решение
Я предлагаю использовать строки вместо числовых значений. Преобразуйте все числовые значения (например, 1000) в строки одинаковой длины (например, 0001000) в процессе индексирования. Итак, если вы хотите найти minSalary от 0 до 20000, ваша строка запроса должна выглядеть следующим образом:
$query = "minSalary:[0000000 TO 0020000]";