PythonのAppengineでのワイルドカード検索
-
05-07-2019 - |
質問
Googleは、Google App EngineでPythonを使用して連絡先データベースを作成し始めたところです。ワイルドカード検索を実装する最良の方法は何ですか?
たとえば、query( 'name ='、%ewman%)を実行できますか?
解決
残念ながら、Google App Engineは部分的なテキスト一致を行うことはできません
ヒント:クエリフィルターには、文字列値の一部のみを一致させる明示的な方法はありませんが、不等式フィルターを使用してプレフィックス一致を偽造できます。
db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")
これは、すべてのMyModelエンティティを、文字abcで始まる文字列プロパティpropと一致させます。ユニコード文字列u&quot; \ ufffd&quot;可能な最大のUnicode文字を表します。プロパティ値がインデックスでソートされる場合、この範囲に含まれる値は、指定されたプレフィックスで始まるすべての値です。
他のヒント
App Engineは効率的にクエリを実行できないため、「いいね」クエリを実行できません。 SQLデータベースもできません: 'foo LIKE&quot;%bar%&quot;'クエリは、テーブル全体で順次スキャンを実行することによってのみ実行できます。
必要なのは転置インデックスです。基本的な全文検索は、 SearchableModel でApp Engineで利用できます。 。 Bill Katzは、こちら、およびこちらで利用可能なApp Engineの商用ソリューション(無料版)がありますa>。
所属していません StackOverflow