Нужен способ обеспечить функцию повышения Solr в стоге сена Джанго - PullRequest
1 голос
/ 03 мая 2019

Мне нужно предоставить в мои результаты поиска функцию повышения 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?

...