5

アプリエンジンの検索APIを使用して,、、、などを含むクエリを検索しようとしました。次のエラーが返されます。=(

Failed to parse query "engines (Modular)"
Traceback (most recent call last):
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__
  rv = self.router.dispatch(request, response)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
  return route.handler_adapter(request, response)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__
  return handler.dispatch()
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch
  return self.handle_exception(e, self.app.debug)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
  return method(*args, **kwargs)
File "/base/data/home/apps/s~generatestock/12.362076640167792770/search.py", line 1641, in get
  result = find_search_document(search_item)
File "/base/data/home/apps/s~generatestock/12.362076640167792770/search.py", line 177, in find_search_document
  return search.Index(name=_INDEX_NAME).search(query)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/search/search.py", line 2715, in search
  query = Query(query_string=query)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/search/search.py", line 2286, in __init__
_CheckQuery(self._query_string)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/search/search.py", line 1964, in _CheckQuery
  raise QueryError('Failed to parse query "%s"' % query)

QueryError: Failed to parse query "Engines (Modular)"

なんで?検索APIはこれらの文字をサポートしていますか?

4

1 に答える 1

7

フレーズを解析するには、フレーズを引用符で囲みます。

query = '"Engines (Modular)"'
search.Index(name=_INDEX_NAME).search(query)

既存のクエリを引用符で囲むだけです。

query = '"{0}"'.format(query)
search.Index(name=_INDEX_NAME).search(query)

ただし、これを機能させるには、クエリ内の既存の引用符を削除する必要があります。Googleのドキュメントには、検索クエリに引用符を含める方法が記載されていません。したがって、完全なフェイルセーフ方式は次のようになります。

query = '"{0}"'.format(query.replace('"', ''))
search.Index(name=_INDEX_NAME).search(query)
于 2012-09-29T13:48:33.807 に答える