1

製品の説明を検索するために、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」のような小さな説明の検索クエリを強調表示することは可能ですか?

4

1 に答える 1

2

IIRCのsnippeted_fieldsは開発サーバーでは機能しません。

デプロイして動作を確認してみてください。デプロイすると期待どおりに機能するはずです。

私の経験では、上記のエラーではなく、開発サーバーで結果が返されません。

于 2012-10-03T10:19:01.307 に答える