В моем приложении я хотел бы, чтобы поиск api оценил соответствие в поле name
, выше совпадения в других полях. Пользователь также может заполнить сообщение «about», которое имеет больше текста, поэтому более вероятно, что там произойдет совпадение. Есть какой-либо способ сделать это?Есть ли способ дать определенным полям документа вес в полнотекстовом поиске в приложении?
ответ
SortExpression (https://developers.google.com/appengine/docs/python/search/sortexpressionclass) предоставляет способ установки сортировки на основе определенного выражения, но он предлагает только оценку по документам (то есть не по полю).
Другой (вероятно, плохая идея) заключается в поиске только поле имени, используя строку запроса, как «имя: my_search_term_here»
Так из моего знания API поиска в Google App Engine не предлагает никакого способа смещения одного поля во время поиск (т. е. аналогичный оператору^в ApacheSolr Lucene).
Я не знаю об этой функции в Google AppEngine. Сказав это, вы можете разделить эту проблему в два этапа. Сначала найдите термин в поле имени, который предоставит вам список документов, назовите его list1. Затем найдите один и тот же термин в менее важных полях. Это даст вам другой список, назовите его list2. Затем вы можете объединить эти два списка любым способом, т. Е. Создать новый список3, который является конкатенацией list1 и list2, а все элементы из списка1 находятся перед элементами из списка2. Надеюсь это поможет.
Опишите проблему, о которой вы пытаетесь решить. На самом деле я не совсем понял, где это было бы полезно. – markovuksanovic
Предположим, у вас есть сайт электронной коммерции, и вы предлагаете поиск продукта. Каждый продукт может иметь заголовок, описание и поле «что находится в поле». Я хочу, чтобы люди могли записывать данные для «адаптера питания», чтобы адаптеры питания были выше, чем продукты, в которых говорится о наличии адаптера питания в коробке. – bigblind