Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 每日索引中的文档_Search_Solr_Search Engine - Fatal编程技术网

Search 每日索引中的文档

Search 每日索引中的文档,search,solr,search-engine,Search,Solr,Search Engine,Solr索引中的所有文档都有一个添加的字段,其中包含文档添加到Solr的ISO 8601日期 <result name="response" numFound="34587104" start="0"> <doc> <date name="added">2013-03-04T01:00:26Z</date> <str name="text">Hello, world!</str>

Solr索引中的所有文档都有一个添加的字段,其中包含文档添加到Solr的ISO 8601日期

<result name="response" numFound="34587104" start="0">
    <doc>
        <date name="added">2013-03-04T01:00:26Z</date>
        <str name="text">Hello, world!</str>
        <str name="id">93416604d274d28a44e14a9535bb9e6e1db3d851</str>
        <str name="_version_">1428536769315340290</str>
    </doc>
<result/>
然而,这种方法似乎非常脆弱,容易出错


有没有办法获得每天索引中文档的累积数量?

我认为没有比刻面提取每日计数更好的方法,使用日期数学比任何计算特定日期字符串的尝试更可取,因此我认为您在这些方面已经有了正确的方法

我能看到的唯一改进是查询*:*并从中获取命中计数,然后您可以使用每日计数通过减法向后生成跑步总数,而不是向前加法。这应该比您的方法执行得好一点,因为*:*对于solr根本不需要过滤工作或分数计算。它还可以让您少写一个日期数学表达式:

说到这里,我怀疑现在/月-1个月不是你的意思。也就是说:现在四舍五入到本月初减去一个月。从28天到61天前,根据现在的日子,如果现在是3月1日和12月31日,你会得到FEB1或11月1日。这与您声明的要求不符:

我需要知道从那时起每天索引中有多少文档 一个月前直到今天


我想你可能想要现在/每天-1个月。此外,似乎您正在排除今天的文档以及您的方面的上限。。。这是需要的吗?如果是这样,我的方法仍然有效,但是您必须将方面的上限扩展到NOW/DAY+1DAY,并且在仍然向后生成运行总数列表时忽略文档总数

我认为没有比刻面更好的方法来提取每日计数,使用日期数学比任何试图计算特定日期字符串的尝试都更可取,因此我认为您在这些方面已经掌握了正确的方法

我能看到的唯一改进是查询*:*并从中获取命中计数,然后您可以使用每日计数通过减法向后生成跑步总数,而不是向前加法。这应该比您的方法执行得好一点,因为*:*对于solr根本不需要过滤工作或分数计算。它还可以让您少写一个日期数学表达式:

说到这里,我怀疑现在/月-1个月不是你的意思。也就是说:现在四舍五入到本月初减去一个月。从28天到61天前,根据现在的日子,如果现在是3月1日和12月31日,你会得到FEB1或11月1日。这与您声明的要求不符:

我需要知道从那时起每天索引中有多少文档 一个月前直到今天


我想你可能想要现在/每天-1个月。此外,似乎您正在排除今天的文档以及您的方面的上限。。。这是需要的吗?如果是这样,我的方法仍然有效,但是您必须将方面的上限扩展到NOW/DAY+1DAY,并且在仍然向后生成运行总数列表时忽略文档总数

根据您的Solr版本,您可以使用字段折叠和group.func参数的组合。

设置行=0&group.field=added&group.func=rintdivmsadded,mul24,mul60,MUL601000

后一个函数将转换为毫秒并舍入到天。
返回的组数是您想要的。您可以按上个月等对其进行筛选。根据您的Solr版本,您可以结合使用分组和字段折叠以及group.func参数。

设置行=0&group.field=added&group.func=rintdivmsadded,mul24,mul60,MUL601000

后一个函数将转换为毫秒并舍入到天。
返回的组数是您想要的。您可以按上个月等进行筛选。这有帮助吗?有什么想法吗?谢谢,格斯。提到现在/每天-1个月似乎是正确的。事实上,我忽略了今天的文件,因为它们在一天结束之前是不完整的。除此之外,我正在尝试避免迭代加法或减法,这也有同样的缺点。这有帮助吗?有什么想法吗?谢谢,格斯。提到现在/每天-1个月似乎是正确的。事实上,我忽略了今天的文件,因为它们在一天结束之前是不完整的。除此之外,我正在努力避免迭代加法或减法,这也有同样的缺点。谢谢。我试着在午夜开始和结束按摩,如果可能的话,这将是最好的方法。我没有想到这一点。有趣的我真想知道它的表现如何更好/更差?。但是,由于闰秒的原因,我不确定它是否可能精确。不过这可能足够好了。它很可能也会在UTC日进行拆分。使用您原来的或我的方法,您可以使用尚未发布的AFAICT f来改变这一点
rom发行说明新特性facet.date.tz试图在查询函数中解释时区似乎相当危险。啊,它已经发布了。我错过了它,因为我看的是bug,而不是新特性。我还没有对分组和方面进行比较,但是分组通常表现得很好。谢谢,这是最好的解决方案。谢谢。我试着在午夜开始和结束按摩,如果可能的话,这将是最好的方法。我没有想到这一点。有趣的我真想知道它的表现如何更好/更差?。但是,由于闰秒的原因,我不确定它是否可能精确。不过这可能足够好了。它很可能也会在UTC日进行拆分。使用您的原始方法或我的方法,您可以通过发行说明中尚未发布的AFAICT来改变这一点。新功能facet.date.tz尝试在查询函数中说明时区似乎相当危险。啊,它已经发布了。我错过了它,因为我看的是bug,而不是新特性。我还没有对分组和方面进行比较,但是分组通常表现得很好。谢谢,这是最好的解决方案。我在模式中有一个字段tstam,它没有索引,只存储。如何在solr中测试每日索引文档。它的格式类似于tstamp:2015-03-05T04:57:54.032ZI,在模式中有一个字段tstam,该字段没有索引,但只存储。如何在solr中测试每日索引文档。其格式类似于tstamp:2015-03-05T04:57:54.032Z
initial_count = q=added:[* TO NOW/MONTH-1MONTH]
running_total = initial_count;
daily_added_array = facet.range=added
                    & f.added.facet.range.start=NOW/MONTH-1MONTH
                    & f.added.facet.range.end=NOW/DAY-1DAY
                    & f.added.facet.range.gap=+1DAY

foreach (daily_added_array as day) {
    running_total += day;
    printf(running_total);
}