Какой хороший шаблон для неточных запросов в хранилище данных Google App Engine?

StackOverflow https://stackoverflow.com/questions/508960

Вопрос

Язык запросов к хранилищу данных Google App Engine (gql) не предлагает неточных операторов типа "НРАВИТСЯ" или даже нечувствительности к регистру.Проблему с учетом регистра можно обойти, сохранив версию поля в нижнем регистре.Но что, если я хочу найти человека, но не уверен в написании его имени?Существует ли общепринятый шаблон для работы с этим сценарием?

Это было полезно?

Решение

Цитирую из документации:

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

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

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

http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html

Другим вариантом является SearchableModel, однако я не верю, что он поддерживает частичные совпадения.

http://billkatz.com/2008/8/A-SearchableModel-for-App-Engine

Другие советы

Вы могли бы хранить soundex http://effbot.org/librarybook/soundex.htm версия имени в хранилище данных.Затем, чтобы запросить имя, озвучьте запрос и найдите его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top