Можно ли запросить несколько полей AWS Cloudsearch для одного и того же значения без повторения? - PullRequest
0 голосов
/ 11 мая 2018

Используя AWS Cloudsearch, мне нужно запросить 2 отдельных поля для одного и того же значения, используя структурированный (составной) запрос, например

(and (or name:'john smith') (or curr_addr:'123 someplace' other_addr:'123 someplace'))

Этот запрос работает, но мне интересно, нужно ли повторятьзначение для каждого поля, которое я хочу найти.Есть ли способ указать значение только один раз, например curr_addr+other_addr:'123 someplace'

1 Ответ

0 голосов
/ 15 мая 2018

Это правильный способ структурировать ваш составной запрос. Из документации AWS вы увидите, что их пример запроса структурирован одинаково:

(and title:'star' (or actors:'Harrison Ford' actors:'William Shatner')(not actors:'Zachary Quinto'))

С Построение сложных запросов

Вы можете обойти это, перечислив более повторяющиеся поля в параметрах запроса (q.options), а затем укажите поле для остальных полей. Список fields является своего рода запасным вариантом, когда вы не указываете, какое поле вы ищете в составном запросе. Таким образом, если вы перечислите там поля адреса и затем укажите только поле name в своем запросе, вы можете приблизиться к искомому поведению.

Варианты запроса

q.options={fields: ['curr_addr','other_addr']}

Запрос

(and (or name:'john smith') (or '123 someplace'))

Но этот подход будет работать только для одного набора повторяющихся полей, так что это ни в коем случае не серебряная пуля.

С Справочник по API поиска (см. q.options => fields)

...