3

Google App Engineデータストアのクエリ言語(gql)は、「LIKE」のような不正確な演算子や大文字と小文字を区別しない演算子を提供していません。フィールドの小文字バージョンを保存することで、大文字と小文字を区別する問題を回避できます。しかし、人を検索したいのに名前のスペルがわからない場合はどうなりますか?このシナリオに対処するための受け入れられたパターンはありますか?

4

2 に答える 2

8

ドキュメントからの引用:

ヒント: クエリ フィルターには、文字列値の一部のみを照合する明示的な方法はありませんが、不等式フィルターを使用してプレフィックス マッチを偽装できます。

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

これは、文字 abc で始まる文字列プロパティ prop を持つすべての MyModel エンティティに一致します。Unicode 文字列 u"\ufffd" は、可能な最大の Unicode 文字を表します。プロパティ値がインデックスで並べ替えられている場合、この範囲に含まれる値は、指定されたプレフィックスで始まるすべての値です。

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

別のオプションは SearchableModel ですが、部分一致をサポートしているとは思いません。

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

于 2009-02-04T00:36:30.117 に答える
1

名前の soundex http://effbot.org/librarybook/soundex.htmバージョンをデータストアに保存できます。次に、名前をクエリするには、クエリをサウンドデックスして検索します。

于 2009-05-11T07:27:42.120 に答える