gpt4 book ai didi

rest - 如何在 Amazon cloudsearch 中检索所有可搜索(未删除)的文档

转载 作者:行者123 更新时间:2023-12-04 12:22:39 25 4
gpt4 key购买 nike

我想从 cloudsearch 检索我所有的可搜索文档

我尝试进行这样的否定搜索:

search-[mySearchEndPoint].cloudsearch.amazonaws.com/2011-02-01/search?bq=(not keywords: '!!!testtest!!!')

它可以工作,但它也会返回所有已删除的文档。

那么我怎样才能得到所有 事件 仅文件?

最佳答案

要知道的关键是 CloudSearch 并没有真正删除。相反,“删除”函数会在索引中保留 ID,但会清除那些已删除文档中的所有字段,包括将 uint 字段设置为 0。这适用于肯定查询,因为它不会匹配已清除的“已删除”文档中的任何文本。

一种解决方法是在您的文档中添加一个 uint 字段,在下面称为“更新”,以用作可能返回已删除 ID 的查询的过滤器,例如否定查询。

(下面的示例使用 Boto interface library for CloudSearch ,为简洁起见省略了许多步骤。)

添加文档时,将该字段设置为当前时间戳

doc['updated'] = now_utc  # unix time in seconds; useful for 'version' also.
doc_service.add(id, now_utc, doc)
conn.commit()

当您删除时,CloudSearch 会将 uint 字段设置为 0:
doc_service.delete(id, now_utc)
conn.commit()
# CloudSearch sets doc's 'updated' field = 0

现在,您可以在否定查询中区分已删除和事件的文档。下面的示例正在搜索一个包含 86 个文档的测试索引,其中大约一半被删除。
# negative query that shows both active and deleted IDs
neg_query = "title:'-foobar'"
results = search_service.search(bq=neg_query)
results.hits # 86 docs in a test index

# deleted items
deleted_query = "updated:0"
results = search_service.search(bq=deleted_query)
results.hits # 46 of them have been deleted

# negative, filtered query that lists only active
filtered_query = "(and updated:1.. title:'-foobar')"
results = search_service.search(bq=filtered_query)
results.hits # 40 active docs

关于rest - 如何在 Amazon cloudsearch 中检索所有可搜索(未删除)的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14566522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com