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

#amazon-cloudsearch #text-search

#amazon-cloudsearch #текстовый поиск

Вопрос:

У меня есть база данных статей, и я хотел бы выполнить поиск по всем статьям, которые: 1. содержат слово «РИО» либо в названии, либо в отрывке 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, поэтому у меня, скорее всего, есть синтаксические ошибки, но, похоже, я не могу их найти. помощь?

Ответ №1:

Вы используете 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:

Комментарии:

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

Ответ №2:

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

Извините за глупость.