【问题标题】:Google App Engine search is not using creation date as default rankGoogle App Engine 搜索未使用创建日期作为默认排名
【发布时间】:2014-06-02 16:17:59
【问题描述】:

在他们的文档Google says that App Engine's search api uses current timestamp as document rank by default 中,但事实并非如此。以下代码:

from google.appengine.api import search

index = search.Index("my_index")

index.put([search.Document(doc_id="doc1", fields=[search.TextField(name="k",value="val")])])
index.put([search.Document(doc_id="doc2", fields=[search.TextField(name="k",value="val")])])
index.put([search.Document(doc_id="doc3", fields=[search.TextField(name="k",value="val")])])

print [r.doc_id for r in index.search("k:val")]

打印:`[u'doc2', u'doc3', u'doc1']``

put 调用之间延迟 1 秒会产生相同的结果。

提供您自己的文档等级确实有效。

【问题讨论】:

    标签: google-app-engine full-text-search


    【解决方案1】:

    我认为它工作正常。默认情况下,搜索按降序返回其结果 (https://developers.google.com/appengine/docs/python/search/best_practices)。因此,如果您在插入 'doc1' 和其他插入之间设置延迟,则 doc1 的时间戳是最小的,因此在结果中显示在最后。

    这是您的示例代码的略微增强版本。它使用两个延迟并打印出 doc_id 以及时间戳:

    from google.appengine.api import search
    import webapp2
    import time
    
    
    class MainPage(webapp2.RequestHandler):
      def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        index = search.Index("my_index")
    
        index.put([search.Document(doc_id="doc1", fields=[search.TextField(name="k",value="val")])])
        time.sleep(1)
        index.put([search.Document(doc_id="doc2", fields=[search.TextField(name="k",value="val")])])
        time.sleep(1)
        index.put([search.Document(doc_id="doc3", fields=[search.TextField(name="k",value="val")])])
    
        self.response.write([r.doc_id + ", " + str(r.rank) for r in index.search("k:val")])
    
    application = webapp2.WSGIApplication([
      (r'/.*', MainPage),
    ], debug=True)
    

    样本输出:

    [u'doc3, 107916240', u'doc2, 107916239', u'doc1, 107916238']

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多