Сортировать запрос диапазона с помощью Zend Lucene

Согласно документации, Zend Lucene предполагается сортировать лексикографически. Я считаю, что это не тот случай. Если у меня есть запрос "avg:[050 TO 300]", то да, он вернет все значения в этом диапазоне, но отсортирует их по идентификатору документа, а не по значению.

Я обнаружил, что функция find() может принимать дополнительные параметры, что позволяет мне сортировать по определенному столбцу (например, $hits = $index->find($query, 'avg', SORT_NUMERIC, SORT_ASC);). Тем не менее, я создаю $query динамически и не хочу сортировать каждый поиск по 'avg'.

Как заставить Lucene автоматически сортировать результаты лексикографически при поиске по диапазону? И если это невозможно, как мне динамически добавить поле сортировки в функцию поиска?

1 ответ

Решение

Почему бы вам не отсортировать $hits самостоятельно после получения результата от $index->find(...)? Хорошо, это выглядит как обходной путь и потребует много времени для очень больших наборов результатов, но я думаю, что это самый простой способ в большинстве случаев.

Другие вопросы по тегам