検索可能なドキュメントは、アプリケーションによって提供される静的なファイルであるという事実を利用するプリコート/ショートカットソリューションはありません。文書、インデックス、 クエリ、および結果:検索APIは、4つの主要な概念に基づいています
:Overviewから
。
あなたはする必要があります。searcheableであるためにあなたの静的なファイルのそれぞれに対応する検索APIドキュメントを作成
次のコードサンプルは、ドキュメントオブジェクトを作成する方法を示しています。 フィールドコンストラクタが呼び出され、fields引数がフィールドオブジェクトのリスト に設定されます。リスト内の各オブジェクトは、フィールドのクラスのコンストラクタ関数を使用して作成され、 で初期化されます。 GeoPoint
コンストラクタの と、 のPython datetime
クラスを使用して、適切なタイプのフィールド値を作成することに注意してください。
のappengine /標準/検索/スニペット/View on GitHub
def create_document():
document = search.Document(
# Setting the doc_id is optional. If omitted, the search service will
# create an identifier.
doc_id='PA6-5000',
fields=[
search.TextField(name='customer', value='Joe Jackson'),
search.HtmlField(
name='comment', value='this is <em>marked up</em> text'),
search.NumberField(name='number_of_visits', value=7),
search.DateField(name='last_visit', value=datetime.now()),
search.DateField(
name='birthday', value=datetime(year=1960, month=6, day=19)),
search.GeoField(
name='home_location', value=search.GeoPoint(37.619, -122.37))
])
return document
あなたがインデックスに文書を入れた場合、文書は 永続ストレージにコピーされ、そのフィールドのそれぞれが、その 名前、種類に応じてインデックス化され、そしてdoc_id
。
次のコード例は、インデックスにアクセスして ドキュメントを挿入する方法を示しています。
appengine/standard/search/snippets/snippets。PYView on GitHub
def add_document_to_index(document):
index = search.Index('products')
index.put(document)
がインデックスからドキュメントを取得するには、クエリ文字列と コールIndex.search()
を構築します。クエリ文字列は 引数として直接渡すこともできますし、 が引数として渡されるQueryオブジェクトに文字列を含めることもできます。既定では、search()
は、一致する文書を と一致する順番でソートして返します。 文書が返される回数、並べ替え方法を制御するには、 に結果を追加するには、 文字列を含むQuery
オブジェクトを使用する必要があります。また、他の検索オプションと並べ替えオプションも指定できます。
のappengine /標準/検索/スニペット/View on GitHub
def query_index():
index = search.Index('products')
query_string = 'product: piano AND price < 5000'
results = index.search(query_string)
for scored_document in results:
print(scored_document)
をsnippets.pyサイドノート:サービス提供とは対照的に、あなたが実際に(アプリのコードで静的ファイルをバンドルしている場合それらをGCSから)あなたはあなたのアプリケーションコードにファイルにアクセス可能にする必要があります。 Handlers element表にapplication_readable行を参照してください:
application_readable
オプション。ブール値。デフォルトでは、静的ファイルハンドラ で宣言されたファイルは静的データとしてアップロードされ、エンドユーザーにのみ提供されます。それらは をアプリケーションで読み取ることはできません。このフィールドがtrueに設定されている場合、 ファイルもコードデータとしてアップロードされるので、アプリケーションは を読み取ることができます。どちらのアップロードもコードと静的データに対して課金されます resource quotas
私が苦労している部分は、静的なHTMLファイルに対応するドキュメントを作成することです。 htmlファイルのフルテキスト検索を実行できるようにするには、ドキュメントのhtmlフィールドを作成し、htmlファイルのテキストコンテンツをこのフィールドの値にコピーする必要がありますか?または、検索可能なフィールドとしてhtmlファイル自体を追加する方法がありますか? –