3

カスタムスニペットの長さを取得できないようです:

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))))

デフォルトの 160 文字ではなく、50 文字の長さのスニペットが必要です。このドキュメントによると、snippet 関数は 3 つの引数を取得できます: 検索語、スニペットするフィールド、およびオプションのスニペットの長さです。

渡す 3 番目のパラメーターを完全に無視しているように見えます...何か間違っていますか?

4

2 に答える 2

3

devserver でスニペットが機能しないようです。ドキュメントを参照してください: https://developers.google.com/appengine/docs/python/search/devserver

Python 開発サーバーの使用

Python 開発サーバーはローカル マシンで実行され、Search API のほとんどの機能をエミュレートします。ただし、現在サーバーで使用できない機能がいくつかあります。現時点では、開発サーバーで実行するときに次の機能を使用しないでください。

式の関数

次の機能は使用できません。

  • スニペット()
  • ジオポイント()
  • 距離()
  • 捕虜()

advoretskyが言ったように、イテラブルであるreturned_expressions必要があります。ドキュメントから:

返された_式

評価して検索結果に返す FieldExpression の iterable。

Queryさらに、右のと を必ずインポートしてください。QueryOptionsどちらも にありgoogle.appengine.ext.ndbます。私はそれらをインポートして接頭辞を付けることを好みます。そうすれば読みやすくなります;-)

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

# Notice the nice distinction
ndb.Query
search.Query
于 2013-11-29T14:49:56.263 に答える