全文検索を使用Google App EngineやJDO?
-
19-09-2019 - |
質問
私が使っているGoogle App Engine(Java)のJDO.する方法を教えてください、JDO相当
select * from table where field like '%foo%'
の勧告を見て選んで利用可能。私が驚いたことがあるのだというこの基本はできませんいただけるよう努めていきます。ン-ボックスGAE.
解決
あなたは、App Engineでその種の検索をサブストリング行うことはできません。この理由は、App Engineデータストアを拡張できるように構築されていることであり、それがインデックスに満足することはできません任意のクエリを実行することを拒否します。それは試合のために、各レコードの「フィールド」プロパティの全体を検索する必要があるため、このようなクエリのインデックスを作成することは、不可能に近いです。あなたが上でこのクエリを実行する任意のリレーショナルデータベースは、全表スキャンを行うと、個別に各レコードをチェックして、それを実行します - スケーラブル、控えめに言っても、
。 あなたは既に出て見つけたとしてソリューションは、このようなLuceneのように、フルテキストインデックスを使用することです。などのApp EngineでのLuceneを実行するためのライブラリがありますが、 GAELucene に。また、これはかなりナイーブサブストリングマッチングよりも、あなたに適切なフルテキスト検索のパワーを与えています。
他のヒント
tl;dr:管理はご自身の価値多元物件検索を行う等の質問をする技術を開発しているのです
詳細: をお探しの方にも簡単に、DIY、次の操作が可能です:
お体を作成し多価
searchTerms
物件です。この企業の検索できます。分割自体の検索可能なテキストは語る。これらの言葉は組織のみを検索できます。ていただき分割に空白文字が追加が基本に起因する.E.g.処理時のメールアドレスだけをユーザーのドメイン部品を別途その両方を検索することができます。場合又は更新する必要がありま再構築しました。
索を行い、分割の検索を入力語の基礎を背景に必要な場合は、追加したものですが、フィルターを使用equalsオペレーターの
searchTerms
物件です。(
=
オペレーター、多価性問合せ 他の 値equalsすることが可能です。)E.g.(使用 自分の足につけて..."足):
Query query = dao.ofy().query(Recipe.class); for (String term : search.toLowerCase().split(" ")) { query = query.filter("searchTerms =", term); }