0

次のシナリオを考えると、リソースの使用に関して、次の方法のどれがより高速かつ/またはより効率的であるか疑問に思っていました。

次のフィールドを持つドキュメントがあります。

  1. タイトル(本文)
  2. 説明(テキスト)
  3. 画像 (テキスト - 画像ソースへの URL、または HTML フィールドの場合もあります)

検索 API は、タイトル フィールドと説明フィールドを検索する必要がありますが、画像フィールドは検索しません。画像フィールドは、検索結果ページにレンダリングする画像ソースをテンプレートに持たせるためだけに存在します。

質問は次のとおりです。

  1. このアプローチは正しいですか?
  2. 実際には検索に使用されないフィールドを追加すると、重みが増し、余分なリソースが消費されますか?
  3. フィールドを検索しないように Search API に指示する方法はありますか?
  4. Search API を使用して doc_id のみを取得し、それらの doc_id を使用してデータストアから取得する方が高速ですか?

ありがとう!

4

1 に答える 1

1

1) ドキュメントにいくつかのフィールドを入力し、それらのフィールドを検索します。アプローチは正しいです。画像にリンクする URL を持つフィールドを持つことも、私が行っていることです。

2) はい、保存する必要があり、ストレージのバイトごとに料金が発生します。しかし、提供したいデータの一部を構成するためにそれらが必要な場合は、それがまさにその通りです。

3) はい、必要に応じて指定したフィールドのみを検索できます。例えば:

query_string = "商品: ピアノ"

そのクエリは、フィールド " product" のみを検索します。詳細はこちら: https://developers.google.com/appengine/docs/python/search/#Python_Searching_for_documents_by_their_contents

4) appstats を使用してタイミングなどを決定できます: https://developers.google.com/appengine/docs/python/tools/appstats

しかし、ドキュメント ID のみを取得し、とにかくすべてのドキュメントを取得する場合は、データベースへの往復クエリを行うため、ドキュメント全体を取得するよりも遅くなるようです。それらをすべて取得せずに最初に一致したものだけを使用する場合、またはドキュメントが大きい場合は、おそらく遅くなる可能性があります。知るか!あなたのユースケースはあなたのユースケースです。

さまざまな方法を実装して自分でテストを実行し、ユースケースに最適なものを確認してみませんか? それには Appstats が役立ちます。

最初のドキュメントを取得した後に検索可能なドキュメントがリンクするデータストアに他のデータを保存する場合 (たとえば、データストア キーをドキュメントに保存する場合)、すべてにコスト、速度、または $$ がかかります。(再び!) ユースケースに応じて、どちらも有効なオプションです。

于 2013-11-03T11:52:54.327 に答える