Мне нужно предоставить в мои результаты поиска функцию повышения edismax feed_count follower_count^8.0
, которая должна привести к следующему URL:
http://localhost:8983/solr/ng_core/select?bf=feed_count%20follower_count%5E8.0&defType=edismax&q=shad
Самое близкое, что я нашел, просматривая документы, и stackoverflow должен был фильтровать, используя AltParser
, например:
sqs.filter(text=AltParser('edismax', query, bf='feed count follower_count^8.0')
, который выдает следующий запрос:
{!edismax bf='feed count follower_count^8.0' }shad
, который не возвращает результата вообще. Я играл в Solr Dashboard, и даже если я получаю его, чтобы вернуть результаты, то, как Solr анализирует его, очень сильно отличается от ожидаемого запроса.
Я попытался прочитать о том, как добавить пользовательские параметры запроса в сгенерированный запрос, но метод Custom Input
мне не подходит, так как он может только изменять текст запроса и не добавлять параметры.
Текущий обходной путь, который я должен был сделать, должен был сделать это так:
sqs.query.get_results(defType='edismax', bf='feed_count')
Так что дополнительные kwargs передаются в функцию окончательного запроса, однако, я действительно не хочу выпрыгивать из хорошей цепочки SearchQuerySet, и что более важно, я не могу заставить пейджинг работать с этим красиво :
sqs.query.get_results(defType='edismax', bf='feed_count')[offset:offset + page_size]
Это не сработает, так как результаты уже получены, а
sqs[offset:offset + page_size].query.get_results(defType='edismax', bf='feed_count')
Это не будет работать, так как теперь sqs slice возвращает список.
Чтобы правильно запустить его, я должен написать так:
query = sqs.query
query.set_limits(offset, offset + page_size)
query.get_results(defType='edismax', bf='feed_count')
Который кажется немного более хакерским. Так есть ли способ добавить параметры запроса, не прерывая цепочку SearchQuerySet?