Amazon CloudSearch возвращает ложные результаты

У меня есть БД статей, и я хотел бы найти все статьи, которые: 1. содержат слово "RIO" либо в заголовке, либо в отрывке 2. содержат слово "БРАЗИЛИЯ" в parent_post_content 3. и в определенный диапазон времени

Запрос, который я ищу (структурированный) был:(and (phrase field=parent_post_content 'BRAZIL') (range field=post_date ['2016-02-16T08:13:26Z','2016-09-16T08:13:26Z'}) (or (phrase field=title 'RIO') (phrase field=excerpt 'RIO')))

но по какой-то причине я получаю результаты, которые содержат "RIO" в заголовке, но не содержат "BRAZIL" в parent_post_content.

Это особенно странно, потому что я попытался ограничить только заголовок (а не отрывок) этим запросом:(and (phrase field=parent_post_content 'BRAZIL') (range field=post_date ['2016-02-16T08:13:26Z','2016-09-16T08:13:26Z'}) (phrase field=name 'RIO'))

и результаты кажутся в порядке.

Я новичок в CloudSearch, так что, скорее всего, у меня есть синтаксические ошибки, но я не могу их найти. Помогите?

2 ответа

Видимо проблема была не в запросе, а в отображаемом контенте. Я по глупости верил, что контент, отображаемый на сайте CloudSearch, был полным, и поэтому пришел к выводу, что он не содержит Бразилию. Но, увы, это не полный контент, и когда я проверяю полный контент, Бразилия была там.

Извините за шалость.

Вы используете phrase оператор, но на самом деле не ищет фразу; было бы лучше использовать term оператор (или нет оператора) вместо. Я не могу понять, почему это должно иметь значение, но использование чего-либо за пределами того, как это было задумано, может привести к непредвиденным последствиям.

Вот как я бы переписал ваши запросы:

Использование термина (в основном используется только если вы хотите увеличить поля):(and (term field=parent_post_content 'BRAZIL') (range field=post_date ['2016-02-16T08:13:26Z','2016-09-16T08:13:26Z'}) (or (term field=title 'RIO') (term field=excerpt 'RIO')))

Без оператора (я считаю это самым простым):(and parent_post_content:'BRAZIL' (range field=post_date ['2016-02-16T08:13:26Z','2016-09-16T08:13:26Z'}) (or title:'RIO' excerpt:'RIO'))

Если это не поможет, вы можете опубликовать полный запрос? Я хотел бы проверить, например, что вы используете синтаксический анализатор структурированных запросов, так как упомянули, что вы новичок в CloudSearch.

Вот некоторые соответствующие документы от Amazon:

Другие вопросы по тегам