製品の説明を検索するために、GAE 検索 API で「snippeted_fields」を使用しています。
これは、検索インデックス テーブルの製品説明です: Multirate 10G IP Services Engine (Modular)+Phone . そして、私はMultirate 10G IPを探しています。アプリスポットにエラーはありません。しかし、dev_appserver は次のエラーを返します。
ERROR 2012-10-03 04:22:40,497 functions.py:143] local variable 'prev_len' referenced before assignment
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 1530, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "C:\Users\app_search\search.py", line 1664, in get
result = find_search_document(search_item)
File "C:\Users\app_search\search.py", line 192, in find_search_document
result = index.search(query_string)
File "C:\Program Files\Google\google_appengine\google\appengine\api\search\search.py", line 2722, in search
apiproxy_stub_map.MakeSyncCall('search', 'Search', request, response)
File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 94, in MakeSyncCall
return stubmap.MakeSyncCall(service, call, request, response)
File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 320, in MakeSyncCall
rpc.CheckSuccess()
File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_rpc.py", line 156, in _WaitImpl
self.request, self.response)
File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub.py", line 160, in MakeSyncCall
method(request, response)
File "C:\Program Files\Google\google_appengine\google\appengine\api\search\simple_search_stub.py", line 871, in _Dynamic_Search
results = index.Search(params)
File "C:\Program Files\Google\google_appengine\google\appengine\api\search\simple_search_stub.py", line 510, in Search
docs = self._AttachExpressions(docs, search_request)
File "C:\Program Files\Google\google_appengine\google\appengine\api\search\simple_search_stub.py", line 493, in _AttachExpressions
evaluator.Evaluate(expr)
File "C:\Program Files\Google\google_appengine\google\appengine\api\search\stub\expression_evaluator.py", line 198, in Evaluate
result = self._Eval(expression_tree)
File "C:\Program Files\Google\google_appengine\google\appengine\api\search\stub\expression_evaluator.py", line 156, in _Eval
return func(*node.children)
File "C:\Program Files\Google\google_appengine\google\appengine\api\search\stub\expression_evaluator.py", line 132, in _Snippet
doc_words, position, search_util.DEFAULT_MAX_SNIPPET_LENGTH)
File "C:\Program Files\Google\google_appengine\google\appengine\api\search\stub\expression_evaluator.py", line 95, in _GenerateSnippet
while (len(snippet) + next_len + prev_len + 6 < max_length and
UnboundLocalError: local variable 'prev_len' referenced before assignment
コード:
def find_search_document(query):
_INDEX_NAME = "GPL_Description"
query = '"{0}"'.format(query.replace('"',''))
options = search.QueryOptions(
snippeted_fields=['description'])
query_string = search.Query(query_string = query, options = options)
index = search.Index(name=_INDEX_NAME)
return index.search(query_string)
また、検索 API を使用して、「Multirate 10G IP Services Engine」のような小さな説明の検索クエリを強調表示することは可能ですか?