【问题标题】:GAE Search API: custom snippet lengthGAE 搜索 API:自定义片段长度
【发布时间】:2013-11-03 15:03:51
【问题描述】:

我似乎无法获得自定义的 sn-p 长度:

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 个字符的 sn-p,而不是默认的 160 个字符。根据这个文档,sn-p 函数可以获得 3 个参数:搜索词、sn-p 的字段和可选的 sn-p 长度。

似乎它完全忽略了我传递的第三个参数......我做错了什么吗?

【问题讨论】:

  • 您的缩进有问题,我不知道您是否混合了制表符和空格,或者这是复制粘贴错误,但我已重新格式化。你指的是什么文档?我似乎在您的问题中找不到链接。添加链接或更好地引用文档。

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


【解决方案1】:

似乎 sn-ps 在开发服务器上不起作用。请参阅文档:https://developers.google.com/appengine/docs/python/search/devserver

使用 Python 开发服务器

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

表达式中的函数

这些功能不可用:

  • sn-p()
  • 地理点()
  • 距离()
  • 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

【讨论】:

    【解决方案2】:

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

    returned_expressions=[FieldExpression('content_snippet', snippet)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多