Я в основном хочу сортировать документы с помощью 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
)
)
Как вы можете видеть, для отладки я вернусь как счет, я хочу, чтобы сортировать, а также оценка по умолчанию. Они возвращают правильные значения, однако документы по-прежнему сортируются по умолчанию.
Любые идеи о том, что я делаю неправильно?
У меня была такая же проблема, и это похоже на ошибку GAE. Единственным способом, который я нашел, было использование встроенного поля _rank (см. [Параметры запроса и сортировки] (https://developers.google.com/appengine/docs/python/search/options)). Основная идея - установить для поля _rank вашего документа значение, которое представляет собой «изображение». – marianosimone