Я только начинаю с Python в Google App Engine, создавая базу данных контактов. Каков наилучший способ поиска по шаблону?
Например, я могу сделать запрос ('name =',% ewman%)?
К сожалению, механизм приложений Google не может выполнить частичное сопоставление текста
Из документов:
Совет: Фильтры запросов не имеют явного способа сопоставления только части строкового значения, но вы можете подделать совпадение префикса с помощью фильтров неравенства:
db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")
Это соответствует каждому объекту MyModel со свойством свойства строки, которое начинается с символов abc. Строка Юникода u "\ ufffd" представляет максимально возможный символ Юникода. Когда значения свойств сортируются в индексе, значения, попадающие в этот диапазон, являются всеми значениями, которые начинаются с данного префикса.
App Engine не может делать «похожие» запросы, потому что он не может делать их эффективно. Однако ваша база данных SQL также не может: запрос 'foo LIKE "% bar%" "может быть выполнен только путем последовательного сканирования всей таблицы.
Вам нужен инвертированный индекс. Базовый полнотекстовый поиск доступен в App Engine с SearchableModel . Билл Кац написал расширенную версию здесь , и есть коммерческое решение для App Engine (с бесплатной версией), доступное здесь .