2017-03-06 14 views
0

大量の静的なhtmlファイルをホストするサイトを設定しており、Googleのアプリケーションエンジン検索APIを使用して検索可能にしたいと考えています。 Googleのアプリエンジンを使用して静的なWebサイトをホストする方法の例をたくさん見てきましたが、検索の実装方法の例は含まれていません。静的なhtmlファイルを検索APIに追加

これを設定するにはどうすればよいですか?検索する静的HTMLファイルを追加する最良の方法は何ですか?これを一括して行う方法はありますか、それを追加するにはすべてのファイルをクロールする必要がありますか?

答えて

0

検索可能なドキュメントは、アプリケーションによって提供される静的なファイルであるという事実を利用するプリコート/ショートカットソリューションはありません。文書、インデックス、 クエリ、および結果:検索APIは、4つの主要な概念に基づいています

Overviewから

あなたはする必要があります。searcheableであるためにあなたの静的なファイルのそれぞれに対応する検索APIドキュメントを作成

  • 。このステップでは、静的ファイルの内容をどのように解釈して検索可能なフィールドに変換するかを指定することができます。 Creating a documentから:

次のコードサンプルは、ドキュメントオブジェクトを作成する方法を示しています。 フィールドコンストラクタが呼び出され、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 
  • がインデックスに文書を挿入snippets.py。各静的ファイルに対応するドキュメントにどのインデックスを使用すべきかだけを知っています。 Putting documents in an indexから:

あなたがインデックスに文書を入れた場合、文書は 永続ストレージにコピーされ、そのフィールドのそれぞれが、その 名前、種類に応じてインデックス化され、そしてdoc_id

次のコード例は、インデックスにアクセスして ドキュメントを挿入する方法を示しています。

appengine/standard/search/snippets/snippets。PYView on GitHub

def add_document_to_index(document): 
    index = search.Index('products') 
    index.put(document) 
  • 結果を表示/検索および処理を行うためのアプリケーション・コードを提供します。ここでもまた、どの索引が検索されるべきか、および結果がどのように処理されるかを知っているだけです。 Searching for documents by their contentsから:

がインデックスからドキュメントを取得するには、クエリ文字列と コール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

+0

私が苦労している部分は、静的なHTMLファイルに対応するドキュメントを作成することです。 htmlファイルのフルテキスト検索を実行できるようにするには、ドキュメントのhtmlフィールドを作成し、htmlファイルのテキストコンテンツをこのフィールドの値にコピーする必要がありますか?または、検索可能なフィールドとしてhtmlファイル自体を追加する方法がありますか? –

関連する問題