我需要通过DocId进行搜索,因为我在Drive中有文件,我也在搜索,需要合并结果。我还需要通过其他字段限制结果。我试过这个问题:
INFO: Searching with query: DocId:(4842249208725504 5405199162146816 5510752278413312 5581121022590976 5827411627212800)
然而,即使它们存在,它也找到了0个结果。我还尝试了doc_id
和id
。
log.info("Searching with query: " + q);
try {
Results<ScoredDocument> results = getIndex().search(q);
我还需要按其他字段过滤,例如:
DocId:(123456789) year:(2012)
其他字段在搜索期间有效,但不是DocId。在Admin界面中,它将DocId显示为其中一个字段! http://localhost:8888/_ah/admin/search?subsection=searchIndex...
答案 0 :(得分:3)
在每个文档中都有一个名为docId
的原子字段,并在该字段中传递doc id。然后你可以按照正常情况进行搜索(按照你的建议)。
虽然创建可读,有意义的独特文档很方便 标识符,您不能在搜索中包含doc_id。考虑一下 场景:您有一个索引,其中包含表示部件的文档 部件的序列号为doc_id。这将是非常有效的 检索任何单个部分的文档,但这是不可能的 搜索一系列序列号以及其他字段值, 如购买日期。将序列号存储在原子字段中 解决了这个问题。
答案 1 :(得分:1)
如果您事先知道文档ID,而不是直接搜索它,为什么不直接获取它?
doc = index.get(“AZ125”)
https://developers.google.com/appengine/docs/python/search/#Python_Retrieving_documents_by_doc_ids