Полнотекстовый поиск с помощью Google App Engine с использованием моделей ndb - PullRequest
4 голосов
/ 11 февраля 2012

Я создал приложение Google, используя следующий модуль БД (ndb) для создания своих моделей. Теперь проблема в том, что я хочу развернуть поиск по полям этих моделей, и я нашел для этого два модуля: 1. Официально поставляется с движком приложений Google (appengine / google / ext / search) и 2. Текстовый поиск gae. (http://code.google.com/p/gae-text-search/). Оба предоставляют модель поиска для старых свойств модуля db. Можно ли каким-либо образом выполнить полнотекстовый поиск с помощью ndb и механизма приложений Google 1.6.2. Также я хочу сохранить эти поисковые запросы в хранилище данных, Как я могу достичь этого тоже? Я использую Python 2.7 для моего развития. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 11 февраля 2012

Лучшее решение - подождать, пока не выйдет полнотекстовый поиск в движке приложения.В настоящее время они находятся в фазе доверенного тестера, так что это скоро.Если вы сейчас создадите свое собственное решение, вы можете закончить его через несколько месяцев.

0 голосов
/ 06 сентября 2015

От: https://cloud.google.com/appengine/docs/python/search/

API поиска предоставляет модель для индексации документов, которые содержат структурированные данные. Вы можете искать индекс, а также организовать и представить результаты поиска. API поддерживает полнотекстовое сопоставление строковых полей. Документы и индексы сохраняются в отдельном постоянном хранилище оптимизирован для поисковых операций. API поиска может индексировать любое число документов.

Выполнение поиска:

index.search("rose water")

Индексирование объекта:

from datetime import datetime
from google.appengine.api import search 

my_document = search.Document(
    fields=[
       search.TextField(name='customer', value='Joe Jackson'),
       search.HtmlField(name='comment', value='this is <em>marked up</em> text'),
       search.NumberField(name='number_of_visits', value=7), 
       search.DateField(name='last_visit', value=datetime.now()),
       search.DateField(name='birthday', value=datetime(year=1960, month=6, day=19)),
       search.GeoField(name='home_location', value=search.GeoPoint(37.619, -122.37))
       ])
0 голосов
/ 11 августа 2012
...