Во-первых, запросы типа «% search_tag%» «LIKE» не работают в хранилище данных App Engine. Лучшее, что вы можете сделать, - это поиск по префиксу.
Трудно ответить на такие общие вопросы, как этот. Наилучшее решение будет зависеть от нескольких факторов, сколько тегов вы ожидаете на одну сущность? Есть ли ограничение на количество тегов? Как вы будете использовать теги? Для поиска? Только для отображения? Ответы на все эти вопросы влияют на то, как вы должны разрабатывать свои модели.
Одним из общих решений для тегирования является использование многозначного свойства, такого как список тегов.
http://code.google.com/appengine/docs/java/datastore/dataclasses.html#Collections
Имейте в виду, что если у вас будет много тегов на ваших сущностях, это добавит накладные расходы во время записи, поскольку записи индексов также требуют времени. Также вам следует избегать многократного использования многозначных свойств (или множественных многозначных свойств) в запросах с неравенствами или порядками. Это может привести к «взрыву индексов», поскольку одна строка индекса записывается для каждой комбинации индексированных полей.