2

我需要按 DocId 搜索,因为我在 Drive 中有我也在搜索的文件,并且需要合并结果。我还需要限制其他领域的结果。我试过这个查询:

INFO: Searching with query:  DocId:(4842249208725504 5405199162146816 5510752278413312 5581121022590976 5827411627212800) 

然而,即使它们存在,它也发现了 0 个结果。我也试过doc_idid

    log.info("Searching with query: " + q);
    try {
        Results<ScoredDocument> results = getIndex().search(q);

我还需要按其他字段过滤,例如:

DocId:(123456789) year:(2012)

其他字段在搜索期间有效,但不是 DocId。在管理界面中,它将 DocId 显示为字段之一!http://localhost:8888/_ah/admin/search?subsection=searchIndex...

伊姆古尔

4

2 回答 2

3

每个文档内部都有一个名为 atom 的字段docId,并在该字段中传递 doc id。然后你可以按照正常情况进行搜索(如你所建议的)。

这是文档中的引用

虽然创建可读、有意义的唯一文档标识符很方便,但您不能在搜索中包含 doc_id。考虑这种情况:您有一个包含代表零件的文档的索引,使用零件的序列号作为 doc_id。检索任何单个部件的文档将非常有效,但不可能搜索一系列序列号以及其他字段值,例如购买日期。将序列号存储在原子字段中解决了这个问题。

于 2014-04-28T14:49:14.050 回答
1

如果您事先知道文档 ID,而不是搜索它,为什么不直接获取它呢?

doc = index.get("AZ125")

https://developers.google.com/appengine/docs/python/search/#Python_Retrieving_documents_by_doc_ids

于 2013-11-15T08:59:24.987 回答