Поиск по шаблону на Appengine в Python - PullRequest
5 голосов
/ 10 сентября 2009

Я только начинаю с Python в Google App Engine, создавая базу данных контактов. Каков наилучший способ поиска по шаблону?

Например, я могу сделать запрос ('name =',% ewman%)?

Ответы [ 2 ]

11 голосов
/ 10 сентября 2009

К сожалению, механизм приложений Google не может выполнить частичное сопоставление текста

Из документов:

Совет: Фильтры запросов не имеют явного способа сопоставления только части строкового значения, но вы можете подделать совпадение префикса с помощью фильтров неравенства:

db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")

Это соответствует каждому объекту MyModel со свойством свойства строки, которое начинается с символов abc. Строка Юникода u "\ ufffd" представляет максимально возможный символ Юникода. Когда значения свойств сортируются в индексе, значения, попадающие в этот диапазон, являются всеми значениями, которые начинаются с данного префикса.

3 голосов
/ 29 октября 2009

App Engine не может делать «похожие» запросы, потому что он не может делать их эффективно. Однако ваша база данных SQL также не может: запрос 'foo LIKE "% bar%" "может быть выполнен только путем последовательного сканирования всей таблицы.

Вам нужен инвертированный индекс. Базовый полнотекстовый поиск доступен в App Engine с SearchableModel . Билл Кац написал расширенную версию здесь , и есть коммерческое решение для App Engine (с бесплатной версией), доступное здесь .

...