SQL LIKEステートメントと同様のフィルターを使用してGAEデータストアにクエリを実行する方法はありますか?たとえば、クラスに文字列フィールドがあり、その文字列に特定のキーワードがあるすべてのクラスを検索したい場合、どうすればよいですか?JDOQLのmatches()が機能しないようです...何かが足りませんか?
コメント、リンク、コードフラグメントは大歓迎です
SQL LIKEステートメントと同様のフィルターを使用してGAEデータストアにクエリを実行する方法はありますか?たとえば、クラスに文字列フィールドがあり、その文字列に特定のキーワードがあるすべてのクラスを検索したい場合、どうすればよいですか?JDOQLのmatches()が機能しないようです...何かが足りませんか?
コメント、リンク、コードフラグメントは大歓迎です
GAE / Jのドキュメントにあるように、BigTableにはそのようなネイティブサポートはありません。JDOQL String.matchesを「something%」(つまりstartsWith)に使用できます。これですべてです。それ以外の場合は、メモリ内で評価してください。
調べる項目がたくさんある場合は、それらをまったくロードしないようにします。おそらく最良の方法は、入力を書き込み時間に分割することです。単語全体で検索するだけなら、それは簡単です
たとえば、「Helloworld」は「Hello」、「world」になります。両方を複数値のプロパティに追加するだけです。テキストがたくさんある場合は、インデックスのルックアップにのみ必要なので、複数値のプロパティをロードしないようにします。これを行うには、「リレーションインデックスエンティティ」を作成します。詳細については、bret slatkinsGoogleIOトークを参照してください。
また、入力を3文字、4文字などの文字列に分割したり、単語をステミングしたりすることもできます。おそらく、luceneステマーを使用します。