在Solr中查找重复值

在Solr中查找重复值,solr,solr4,Solr,Solr4,是否有一种方法可以构造一个查询,以便它能够识别/返回重复特定字段的文档。我要寻找的是SQL中的等效项: SELECT content, count(*) FROM documents GROUP BY content ORDER BY count(*) DESC 基本上,给我内容相同的文档。我所发现的一切都讨论了如何在插入时丢弃重复项,或者如何在搜索结果中消除重复项。我尝试使用,但出现以下错误: "error": { "msg": "can not use FieldCache on a

是否有一种方法可以构造一个查询,以便它能够识别/返回重复特定字段的文档。我要寻找的是SQL中的等效项:

SELECT content, count(*) FROM documents GROUP BY content ORDER BY count(*) DESC
基本上,给我内容相同的文档。我所发现的一切都讨论了如何在插入时丢弃重复项,或者如何在搜索结果中消除重复项。我尝试使用,但出现以下错误:

"error": {
  "msg": "can not use FieldCache on a field which is neither indexed nor has doc values: content",
  "code": 400
}

基于这个错误,我假设它失败了,因为内容没有索引。我尝试使用另一个索引字段(而不是存储文档URL的多值字段)来进行分组,但我无法确定结果组的头尾,尤其是groupValue。我可以尝试创建一个被索引的复制字段,但我不确定这是否会提供我要查找的内容,我的爬网程序需要24小时以上的时间进行爬网。

这可以很容易地在Solr中完成

首先,确保schema.xml是平方的,您将对其执行此操作的字段需要存储和索引。字段的类型应为字符串,这将保持数据的原样,而不进行标记化

接下来,为内容编制索引并对其运行查询,假设字段名为field1

q=*:*&facet=true&facet.field=field1&facet.mincount=1


您将得到field1所有值的响应以及相同值的计数

使用面将产生所需的结果。首先,您需要使用适当的定义在solr中索引字段内容。例如:

其中类型基本上映射如下

[文件]


如果您试图在具有高基数的近似唯一字段中获取重复项,则可以将facet与查询术语一起使用


{!terms f=partid}partid1,partid2..N&facet=true&facet.field=partid&facet.limit=N&facet.mincount=2

我假设您基本上是在内容字段中查找重复元素的计数。如果是这种情况,您可以在solr中始终使用facet。当我尝试facet=true&facet.field=content时,facet\u计数为空。我需要为内容或任何内容编制索引吗?是的,您需要为内容字段编制索引。您还可以按方面的不同顺序对其进行排序。您可以使用text_general作为默认字段类型。这正是我最后要做的。诀窍是将内容字段转换为字符串而不是文本。一旦我们解决了这个问题并重新运行我们的爬虫程序,刻面就起作用了。这有助于我们识别大量爬网URL,这些URL由于看起来略有不同但最终登录到同一页面而循环。