5

Я в основном хочу сортировать документы с помощью MatchScore, но увеличивать те, у которых есть изображение.GAE Search API sorting

Для этого мой подход состоит в том, чтобы добавить поле в документ с повышающим значением, а затем умножить это значение на документ _score.

Проблема в том, что со следующим кодом я не могу добиться сортировки документов на основе умножения обоих значений. API поиска возвращает документы, отсортированные по _score, вместо выражения SortOptions, которое я передаю.

sort_opts = SortOptions(
     match_scorer=search.MatchScorer(), 
     expressions=[ 
      search.SortExpression(
       expression='_score * has_img', 
       direction=search.SortExpression.DESCENDING, 
       default_value=0.0 
      ) 
     ] 
    ) 

options = QueryOptions(
    limit=10, 
    sort_options=sort_opts, 
    returned_expressions=[ 
     FieldExpression('score', '_score * has_img'), 
     FieldExpression('normalscore', '_score * 1') 
    ] 
) 

index = search.Index(name='Search', namespace='search') 
results = index.search(
    query=Query(
     query_string=search_query, 
     options=options 
    ) 
) 

Как вы можете видеть, для отладки я вернусь как счет, я хочу, чтобы сортировать, а также оценка по умолчанию. Они возвращают правильные значения, однако документы по-прежнему сортируются по умолчанию.

Любые идеи о том, что я делаю неправильно?

+0

У меня была такая же проблема, и это похоже на ошибку GAE. Единственным способом, который я нашел, было использование встроенного поля _rank (см. [Параметры запроса и сортировки] (https://developers.google.com/appengine/docs/python/search/options)). Основная идея - установить для поля _rank вашего документа значение, которое представляет собой «изображение». – marianosimone

ответ

0

Как было отмечено выше:

У меня была такая же проблема, и, похоже, ошибка GAE. Единственным способом, который я нашел, было использование встроенного поля _rank (см. Параметры запроса и сортировки). Основная идея заключается в том, чтобы установить поле _rank вашего документа на значение, представляющее «наличие изображения»