3

我正在开发一个网络爬虫,保存到 Raven 的结果可能会因网站的大小而异。我正在尝试删除“每个会话的服务器限制为 30 个”的特定结果,我不想将其扩展到 1,000 个限制,但我确实想批量删除。

我写的我认为应该工作的代码是

    public void DeleteCrawledLinks(string baseUrl)
    {

        DocumentStore().DatabaseCommands.DeleteByIndex(
            "Auto/UrlContainers/ByBaseUrlAndUrl",
            new IndexQuery
            {
                Query = "BaseUrl:" + baseUrl // where BaseUrl contains baseUrl
            }, allowStale: false);
     }

本示例中 Raven 中的 BaseUrl 让我们称其为“BaseUrl”:“http://localhost:2125/”,baseUrl 将是相同的,当我运行删除函数时,我收到此错误消息

网址:“/bulk_docs/Auto/UrlContainers/ByBaseUrlAndUrl?query=BaseUrl%253Ahttp%253A%252F%252Flocalhost%253A2125%252F&start=0&pageSize=128&aggregation=None&allowStale=False”

System.ArgumentException:字段“http”未编入索引,无法查询未编入索引的字段

是因为 : 在我的查询中,有没有办法解决这个问题还是有其他方法?我不想扩大限制,因为我抓取的网站可能返回 1,000 多个结果。

4

1 回答 1

3

自己构建查询时,请按如下方式转义搜索词:

Query = "BaseUrl:" + RavenQuery.Escape(baseUrl)
于 2012-12-12T18:37:18.483 回答