1

SQL LIKEステートメントと同様のフィルターを使用してGAEデータストアにクエリを実行する方法はありますか?たとえば、クラスに文字列フィールドがあり、その文字列に特定のキーワードがあるすべてのクラスを検索したい場合、どうすればよいですか?JDOQLのmatches()が機能しないようです...何かが足りませんか?

コメント、リンク、コードフラグメントは大歓迎です

4

2 に答える 2

2

GAE / Jのドキュメントにあるように、BigTableにはそのようなネイティブサポートはありません。JDOQL String.matchesを「something%」(つまりstartsWith)に使用できます。これですべてです。それ以外の場合は、メモリ内で評価してください。

于 2010-02-26T11:06:44.403 に答える
1

調べる項目がたくさんある場合は、それらをまったくロードしないようにします。おそらく最良の方法は、入力を書き込み時間に分割することです。単語全体で検索するだけなら、それは簡単です

たとえば、「He​​lloworld」は「Hello」、「world」になります。両方を複数値のプロパティに追加するだけです。テキストがたくさんある場合は、インデックスのルックアップにのみ必要なので、複数値のプロパティをロードしないようにします。これを行うには、「リレーションインデックスエンティティ」を作成します。詳細については、bret slatkinsGoogleIOトークを参照してください。

また、入力を3文字、4文字などの文字列に分割したり、単語をステミングしたりすることもできます。おそらく、luceneステマーを使用します。

于 2010-03-01T20:36:46.927 に答える