Можно ли запросить несколько полей AWS Cloudsearch для одного и того же значения без повторения?

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

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

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


person RTF    schedule 11.05.2018    source источник


Ответы (1)


Это правильный способ структурировать составной запрос. Из документации 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)

person dmbaughman    schedule 15.05.2018