Pergunta

A linguagem de consulta do Google App Engine Datastore (GQL) não oferece operadores inexatas como "Like" ou mesmo insensibilidade caso. Pode-se obter em torno da questão sensível caso armazenando uma versão minúscula de um campo. Mas e se eu quiser procurar por uma pessoa, mas não tenho a certeza da ortografia do nome? Existe um padrão aceito para lidar com este cenário?

Foi útil?

Solução

Citando a documentação:

Dica: filtros de consulta não tem uma forma explícita para corresponder apenas parte de um valor da cadeia, mas você pode fingir uma correspondência de prefixo usando filtros de desigualdade:

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

Esta corresponde a cada entidade MyModel com um prop propriedade de cadeia que começa com o abc caracteres. A cadeia de caracteres Unicode U "\ ufffd" representa o maior personagem possível Unicode. Quando os valores de propriedade são classificadas em um índice, os valores que se enquadram nesta faixa são todos os valores que começam com o prefixo dado.

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

Outra opção é o SearchableModel, no entanto, eu não acredito que ele suporta partidas parciais.

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

Outras dicas

Você pode armazenar um soundex http://effbot.org/librarybook/soundex.htm versão do nome no armazenamento de dados. Então, para consultar um nome, SOUNDEX a consulta, e olhe isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top