2012-06-09 15 views
9

私はGoogle App Engine Search API(https://developers.google.com/appengine/docs/python/search/)を使用しています。私はすべてのエンティティを索引付けしており、検索は正常に動作しています。私は正確に一致するものを検索する場合のみ、0の結果を返します。例:Google App Engine(python):検索API:文字列検索

from google.appengine.api import search 

_INDEX_NAME = 'searchall' 


query_string ="United Kingdom" 
query = search.Query(query_string=query_string) 
index = search.Index(name=_INDEX_NAME) 

print index.search(query) 

私は次のスクリプトを実行した場合、私は次のような結果を得るか:

search.SearchResults(results='[search.ScoredDocument(doc_id='c475fd24-34ba-42bd-a3b5-d9a48d880012', fields='[search.TextField(name='name', value='United Kingdom')]', language='en', order_id='45395666'), search.ScoredDocument(doc_id='5fa757d1-05bf-4012-93ff-79dd4b77a878', fields='[search.TextField(name='name', value='United Kingdom')]', language='en', order_id='45395201')]', number_found='2') 

をしかし、私は、"United Kin"または"United"query_stringを変更した場合、以下のように、それは0の結果を返します。

search.SearchResults(number_found='0') 

通常の検索とAutoSuggestの両方にこのAPIを使用します。これを達成する最良の方法は何でしょうか?

答えて

16

App Engineのフルテキスト検索APIは、部分文字列一致をサポートしていません。

しかし、ユーザーの入力時に検索候補をサポートするには、この動作が必要でした。これは私の解決策です。

考えられる部分文字列ごとに個別のキーワードを手動で生成することです。これは短い文章の場合にのみ実用的ですが、私の目的にはうまくいきます。

+0

お返事ありがとうございますが、データストア内の各エンティティについてデータストアのサイズに影響しないようにすると、大きなデータストアが静かになりますか?私は4種類の検索可能なモデルのようなものを持っていて、それぞれ平均10万件以上のレコードを持っています。 – Amyth

+0

はい、これらの自動生成キーワードを残りのデータと一緒に保存する必要があります。 –