Zend Lucene - поиск в пределах досягаемости - PullRequest
0 голосов
/ 09 апреля 2011

У меня есть следующий код для создания индекса 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

Может кто-нибудь посоветовать по этому поводу?

Спасибо B

1 Ответ

1 голос
/ 11 апреля 2011

Я предлагаю использовать строки вместо числовых значений. Преобразуйте все числовые значения (например, 1000) в строки одинаковой длины (например, 0001000) в процессе индексирования. Итак, если вы хотите найти minSalary от 0 до 20000, ваша строка запроса должна выглядеть следующим образом:

$query = "minSalary:[0000000 TO 0020000]";
...