Как использовать «карту» структуры данных «в запросе» - PullRequest
1 голос
/ 07 мая 2019

Я хочу включить map в vespa запрос (не атрибут документа) и найти его в expression, но у меня есть несколько вопросов.

  1. Могу ли я использовать map в запросе Vespa ?
  2. Если это возможно, как искать элементы в expression?
  3. Если это невозможно,можно вместо этого использовать mapped tensor type?

Ответы [ 2 ]

2 голосов
/ 08 мая 2019

Чтобы передать разреженные значения в выражение ранжирования, которое обращается к ним по отдельности (например, к XGBoost или другой модели GBTD), передайте их как отдельные функции запроса: query (mykey) и т. Д.

В запросе HTTP:

ranking.features.query(mykey)=30.3

Или в коде Java (в поисковике):

query.getRanking().getFeatures().put("query(mykey", String.valueOf(30.3));

Вы также можете назначить значение по умолчанию для каждой функции запроса, используемой в вашей модели.См. https://docs.vespa.ai/documentation/ranking.html#using-query-variables

(вместо многих скалярных запросов вместо функции скалярного запроса вы бы использовали функцию сопоставленного тензорного запроса, если бы ваша модель вычислялась на карте в целом, например, путем объединения ее с картой документа.)

1 голос
/ 07 мая 2019

Здесь приведены примеры того, как искать поля карты с помощью оператора запроса sameElement https://docs.vespa.ai/documentation/reference/query-language-reference.html#sameelement но если я вас правильно понимаю, вы хотите передать карту в качестве оператора запроса?Если это так, то возникает вопрос, хотите ли вы использовать это для отзыва (какие документы соответствуют или просто в качестве входных данных для ранжирования в сконфигурированном выражении ранжирования? В последнем случае вы можете использовать тензоры, но тензоры нельзя использовать для отзыва / поиска.

...