Поиск в хранилище данных Google Apps Engine - PullRequest
1 голос
/ 05 октября 2011

Мне было интересно, есть ли способ найти запись в хранилище данных. У меня есть куча записей для песен (название, исполнитель, рейтинг), но я не уверен, как на самом деле найти их по названию и исполнителю. Мы принимаем поисковый запрос и ищем все записи, которые "соответствуют". Но мы потерялись :( любая помощь очень ценится!

  • Мы используем Python

edit1: текущий код бесполезен, точный поиск, но может помочь вам увидеть проблему

   query = song.gql("SELECT * FROM song WHERE title = searchTerm  OR  artist = searchTerm")

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Данные песни, с которыми вы работаете со звуками, представляют собой довольно статичный набор данных (в основном, вставок, без или с небольшим количеством обновлений). В этом случае существует метод GAE под названием Relation Index Entity (RIE), который является эффективным способом реализации поиска по ключевым словам.

Но требуется некоторая подготовительная работа, которая кратко:

  • создание специальной сущности RIE, в которую вы помещаете все ключевые слова для поиска от каждой песни (отношения один-к-одному).
  • RIE сохраняет их в StringListProperty, который поддерживает поиск следующим образом: keywords = 'SearchTerm' (возвращает True, если любое из значений в списке keywords соответствует 'SearchTerm'`)
  • И условие работает немедленно, добавляя несколько фильтров, как указано выше
  • ИЛИ условие требует больше работы, реализуя слияние в памяти из запросов только для AND

Подробную информацию о рабочих процессах решения и образцах кода можно найти в моем блоге. Индексные отношения с Python для Google Datastore .

0 голосов
/ 05 октября 2011
...