Подстановочный поиск на Appengine в Python

От эта ссылка у них, кажется, есть много возможных решений, но тот, который казался самым простым, был комментарием:

Код F#:

type FCallback = delegate of int*int -> int;;
type FCallback =
  delegate of int * int -> int

let f3 (f:FCallback) a b = f.Invoke(a,b);;
val f3 : FCallback -> int -> int -> int

Код C#:

int a = Module1.f3(Module1.f2, 10, 20); // method gets converted to the delegate automatically in C#

5
задан Fox Wilson 18 August 2011 в 12:31
поделиться

2 ответа

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

Из документации:

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

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

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

11
ответ дан 18 December 2019 в 13:16
поделиться

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

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

3
ответ дан 18 December 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: