GAE Search API:自定义代码段长度

时间:2013-11-03 15:03:52

标签: python google-app-engine python-2.7 google-search-api

我似乎无法获得自定义代码段:

snippet = 'snippet("%s", content, 50)' % search_query
index = search.Index(name='index', namespace='namespace')
start_time = time.time()
results = index.search(
    query=Query(
        query_string=search_query,
        options=QueryOptions(
            limit=10,
            cursor=Cursor(),
            sort_options=SortOptions(
                match_scorer=search.RescoringMatchScorer()),
            returned_expressions=FieldExpression('content_snippet', snippet))))

我想要一个长度为50个字符的代码段,而不是默认的160个字符。根据此文档,代码段功能可以获得3个参数:搜索词,要摘录的字段和可选的片段长度。

似乎它完全无视我通过的第三个参数......我做错了什么?

2 个答案:

答案 0 :(得分:3)

似乎片段不能在devserver上运行。请参阅文档:https://developers.google.com/appengine/docs/python/search/devserver

  

使用Python Development Server

     

Python开发服务器在您的本地计算机上运行,​​并模拟大多数Search API的功能。但是,服务器上当前不提供一些功能。目前,在开发服务器上运行时,不应尝试使用以下功能:

     

表达式中的函数

     

这些功能不可用:

     
      
  • 片段()
  •   
  • 的GeoPoint()
  •   
  • 距离()
  •   
  • POW()
  •   

正如advoretsky所说,returned_expressions需要是可迭代的。来自文档:

  

<强> returned_expressions

     

可迭代的FieldExpression,用于评估并返回搜索结果。

此外,请务必导入右QueryQueryOptions,这两者也可在google.appengine.ext.ndb中找到。我更喜欢导入它们,因此它们有一个前缀,然后更好的可读性; - )

from google.appengine.ext import ndb
from google.appengine.api import search

# Notice the nice distinction
ndb.Query
search.Query

答案 1 :(得分:1)

我还没有亲自尝试,但根据参考 returned_expressions should be iterable。另请参阅Query and Sorting Options上的示例并更改为

returned_expressions=[FieldExpression('content_snippet', snippet)]
相关问题