#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, завершено, и поэтому пришел к выводу, что оно не содержит Бразилии. Но, увы, это не полный контент, и когда я проверяю полный контент, Бразилия была там.
Извините за глупость.