JSON Facet doesn't allow date range facets

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

JSON Facet doesn't allow date range facets

Mel Mason
Hi,

I'm trying to have a range facet on a field of type solr.DateRangeField.
As far as I can tell, this isn't possible with JSONFacet, only with the
old facet system - a quick google turns up several other people with the
same problem. When using JSONFacet I get problems with this line of
code:
https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/search/facet/FacetRange.java#L255

It looks like during the change to JSONFacet the range facets have been
restricted to only allow Trie or PointField fields. Is this likely to be
fixed in future updates, or were there problems with using
DateRangeFields? I could use the old parameter facet system, but there
are features in JSONFacet I need.

For completeness, the error I get:

org.apache.solr.common.SolrException: Unable to range facet on field:date_dtr
        at org.apache.solr.search.facet.FacetRangeProcessor.getCalcForField(FacetRange.java:238)
        at org.apache.solr.search.facet.FacetRangeProcessor.<init>(FacetRange.java:122)
        at org.apache.solr.search.facet.FacetRange.createFacetProcessor(FacetRange.java:65)
        at org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:397)
        at org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:475)
        at org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:432)
        at org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
        at org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
        at org.apache.solr.search.facet.FacetModule.process(FacetModule.java:146)
        at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
        at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
        at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:502)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:748)

Thanks,

--
Mel Mason
Software Engineer
Bodleian Digital Library Systems and Services
Osney One
Mon-Thurs

01865 280031
[hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: JSON Facet doesn't allow date range facets

MUNENDRA S N
Currently, it is not supported yet. Related JIRA -
https://issues.apache.org/jira/browse/SOLR-10567

Regards,
Munendra S N



On Thu, Dec 12, 2019 at 4:58 PM Mel Mason <[hidden email]>
wrote:

> Hi,
>
> I'm trying to have a range facet on a field of type solr.DateRangeField.
> As far as I can tell, this isn't possible with JSONFacet, only with the
> old facet system - a quick google turns up several other people with the
> same problem. When using JSONFacet I get problems with this line of
> code:
>
> https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/search/facet/FacetRange.java#L255
>
> It looks like during the change to JSONFacet the range facets have been
> restricted to only allow Trie or PointField fields. Is this likely to be
> fixed in future updates, or were there problems with using
> DateRangeFields? I could use the old parameter facet system, but there
> are features in JSONFacet I need.
>
> For completeness, the error I get:
>
> org.apache.solr.common.SolrException: Unable to range facet on
> field:date_dtr
>         at
> org.apache.solr.search.facet.FacetRangeProcessor.getCalcForField(FacetRange.java:238)
>         at
> org.apache.solr.search.facet.FacetRangeProcessor.<init>(FacetRange.java:122)
>         at
> org.apache.solr.search.facet.FacetRange.createFacetProcessor(FacetRange.java:65)
>         at
> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:397)
>         at
> org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:475)
>         at
> org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:432)
>         at
> org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
>         at
> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
>         at
> org.apache.solr.search.facet.FacetModule.process(FacetModule.java:146)
>         at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
>         at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
>         at
> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
>         at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
>         at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
>         at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
>         at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
>         at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
>         at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
>         at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
>         at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
>         at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>         at
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>         at org.eclipse.jetty.server.Server.handle(Server.java:502)
>         at
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
>         at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
>         at org.eclipse.jetty.io
> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
>         at org.eclipse.jetty.io
> .FillInterest.fillable(FillInterest.java:103)
>         at org.eclipse.jetty.io
> .ChannelEndPoint$2.run(ChannelEndPoint.java:118)
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
>         at
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
>         at java.lang.Thread.run(Thread.java:748)
>
> Thanks,
>
> --
> Mel Mason
> Software Engineer
> Bodleian Digital Library Systems and Services
> Osney One
> Mon-Thurs
>
> 01865 280031
> [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: JSON Facet doesn't allow date range facets

Joel Bernstein
In reply to this post by Mel Mason
There is a field type in the schema called pdate:

<fieldType name="pdate" class="solr.DatePointField" docValues="true"/>

This should work for you.

The timeseries Streaming Expression uses the JSON facet API for range
faceting and works really well.




Joel Bernstein
http://joelsolr.blogspot.com/


On Thu, Dec 12, 2019 at 6:28 AM Mel Mason <[hidden email]>
wrote:

> Hi,
>
> I'm trying to have a range facet on a field of type solr.DateRangeField.
> As far as I can tell, this isn't possible with JSONFacet, only with the
> old facet system - a quick google turns up several other people with the
> same problem. When using JSONFacet I get problems with this line of
> code:
>
> https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/search/facet/FacetRange.java#L255
>
> It looks like during the change to JSONFacet the range facets have been
> restricted to only allow Trie or PointField fields. Is this likely to be
> fixed in future updates, or were there problems with using
> DateRangeFields? I could use the old parameter facet system, but there
> are features in JSONFacet I need.
>
> For completeness, the error I get:
>
> org.apache.solr.common.SolrException: Unable to range facet on
> field:date_dtr
>         at
> org.apache.solr.search.facet.FacetRangeProcessor.getCalcForField(FacetRange.java:238)
>         at
> org.apache.solr.search.facet.FacetRangeProcessor.<init>(FacetRange.java:122)
>         at
> org.apache.solr.search.facet.FacetRange.createFacetProcessor(FacetRange.java:65)
>         at
> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:397)
>         at
> org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:475)
>         at
> org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:432)
>         at
> org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
>         at
> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
>         at
> org.apache.solr.search.facet.FacetModule.process(FacetModule.java:146)
>         at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
>         at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
>         at
> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
>         at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
>         at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
>         at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
>         at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
>         at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
>         at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
>         at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
>         at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
>         at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>         at
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>         at org.eclipse.jetty.server.Server.handle(Server.java:502)
>         at
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
>         at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
>         at org.eclipse.jetty.io
> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
>         at org.eclipse.jetty.io
> .FillInterest.fillable(FillInterest.java:103)
>         at org.eclipse.jetty.io
> .ChannelEndPoint$2.run(ChannelEndPoint.java:118)
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
>         at
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
>         at
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
>         at java.lang.Thread.run(Thread.java:748)
>
> Thanks,
>
> --
> Mel Mason
> Software Engineer
> Bodleian Digital Library Systems and Services
> Osney One
> Mon-Thurs
>
> 01865 280031
> [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: JSON Facet doesn't allow date range facets

Mel Mason
Unfortunately I need a date range field, e.g [2000-05-01 TO 2019-06-02].
DatePointFields can't represent that as far as I know.

On 12/12/2019 11:40, Joel Bernstein wrote:

> There is a field type in the schema called pdate:
>
> <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
>
> This should work for you.
>
> The timeseries Streaming Expression uses the JSON facet API for range
> faceting and works really well.
>
>
>
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
>
> On Thu, Dec 12, 2019 at 6:28 AM Mel Mason <[hidden email]>
> wrote:
>
>> Hi,
>>
>> I'm trying to have a range facet on a field of type solr.DateRangeField.
>> As far as I can tell, this isn't possible with JSONFacet, only with the
>> old facet system - a quick google turns up several other people with the
>> same problem. When using JSONFacet I get problems with this line of
>> code:
>>
>> https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/search/facet/FacetRange.java#L255
>>
>> It looks like during the change to JSONFacet the range facets have been
>> restricted to only allow Trie or PointField fields. Is this likely to be
>> fixed in future updates, or were there problems with using
>> DateRangeFields? I could use the old parameter facet system, but there
>> are features in JSONFacet I need.
>>
>> For completeness, the error I get:
>>
>> org.apache.solr.common.SolrException: Unable to range facet on
>> field:date_dtr
>>          at
>> org.apache.solr.search.facet.FacetRangeProcessor.getCalcForField(FacetRange.java:238)
>>          at
>> org.apache.solr.search.facet.FacetRangeProcessor.<init>(FacetRange.java:122)
>>          at
>> org.apache.solr.search.facet.FacetRange.createFacetProcessor(FacetRange.java:65)
>>          at
>> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:397)
>>          at
>> org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:475)
>>          at
>> org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:432)
>>          at
>> org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
>>          at
>> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
>>          at
>> org.apache.solr.search.facet.FacetModule.process(FacetModule.java:146)
>>          at
>> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
>>          at
>> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
>>          at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
>>          at
>> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
>>          at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
>>          at
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
>>          at
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
>>          at
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
>>          at
>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
>>          at
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
>>          at
>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>>          at
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>>          at
>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
>>          at
>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
>>          at
>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
>>          at
>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
>>          at
>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
>>          at
>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
>>          at
>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
>>          at
>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
>>          at
>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
>>          at
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
>>          at
>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
>>          at
>> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>>          at
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>>          at
>> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>>          at
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>>          at org.eclipse.jetty.server.Server.handle(Server.java:502)
>>          at
>> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
>>          at
>> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
>>          at org.eclipse.jetty.io
>> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
>>          at org.eclipse.jetty.io
>> .FillInterest.fillable(FillInterest.java:103)
>>          at org.eclipse.jetty.io
>> .ChannelEndPoint$2.run(ChannelEndPoint.java:118)
>>          at
>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
>>          at
>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
>>          at
>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
>>          at
>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
>>          at
>> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
>>          at
>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
>>          at
>> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
>>          at java.lang.Thread.run(Thread.java:748)
>>
>> Thanks,
>>
>> --
>> Mel Mason
>> Software Engineer
>> Bodleian Digital Library Systems and Services
>> Osney One
>> Mon-Thurs
>>
>> 01865 280031
>> [hidden email]
>>
>>
Reply | Threaded
Open this post in threaded view
|

Re: JSON Facet doesn't allow date range facets

Joel Bernstein
With the DatePointField you can still do the range query, but I believe
you'll need to specify the full ISO date string: 2000-05-01T01:01:01Z

Joel Bernstein
http://joelsolr.blogspot.com/


On Thu, Dec 12, 2019 at 6:46 AM Mel Mason <[hidden email]>
wrote:

> Unfortunately I need a date range field, e.g [2000-05-01 TO 2019-06-02].
> DatePointFields can't represent that as far as I know.
>
> On 12/12/2019 11:40, Joel Bernstein wrote:
> > There is a field type in the schema called pdate:
> >
> > <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
> >
> > This should work for you.
> >
> > The timeseries Streaming Expression uses the JSON facet API for range
> > faceting and works really well.
> >
> >
> >
> >
> > Joel Bernstein
> > http://joelsolr.blogspot.com/
> >
> >
> > On Thu, Dec 12, 2019 at 6:28 AM Mel Mason <[hidden email]>
> > wrote:
> >
> >> Hi,
> >>
> >> I'm trying to have a range facet on a field of type solr.DateRangeField.
> >> As far as I can tell, this isn't possible with JSONFacet, only with the
> >> old facet system - a quick google turns up several other people with the
> >> same problem. When using JSONFacet I get problems with this line of
> >> code:
> >>
> >>
> https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/search/facet/FacetRange.java#L255
> >>
> >> It looks like during the change to JSONFacet the range facets have been
> >> restricted to only allow Trie or PointField fields. Is this likely to be
> >> fixed in future updates, or were there problems with using
> >> DateRangeFields? I could use the old parameter facet system, but there
> >> are features in JSONFacet I need.
> >>
> >> For completeness, the error I get:
> >>
> >> org.apache.solr.common.SolrException: Unable to range facet on
> >> field:date_dtr
> >>          at
> >>
> org.apache.solr.search.facet.FacetRangeProcessor.getCalcForField(FacetRange.java:238)
> >>          at
> >>
> org.apache.solr.search.facet.FacetRangeProcessor.<init>(FacetRange.java:122)
> >>          at
> >>
> org.apache.solr.search.facet.FacetRange.createFacetProcessor(FacetRange.java:65)
> >>          at
> >> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:397)
> >>          at
> >>
> org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:475)
> >>          at
> >>
> org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:432)
> >>          at
> >>
> org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
> >>          at
> >> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
> >>          at
> >> org.apache.solr.search.facet.FacetModule.process(FacetModule.java:146)
> >>          at
> >>
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
> >>          at
> >>
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
> >>          at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
> >>          at
> >> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
> >>          at
> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
> >>          at
> >>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
> >>          at
> >>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
> >>          at
> >>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
> >>          at
> >>
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
> >>          at
> >>
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
> >>          at
> >>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
> >>          at
> >>
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
> >>          at
> >>
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
> >>          at
> >>
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
> >>          at
> >>
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
> >>          at
> >>
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
> >>          at
> >>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >>          at
> >>
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
> >>          at
> >>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >>          at org.eclipse.jetty.server.Server.handle(Server.java:502)
> >>          at
> >> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
> >>          at
> >>
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
> >>          at org.eclipse.jetty.io
> >> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
> >>          at org.eclipse.jetty.io
> >> .FillInterest.fillable(FillInterest.java:103)
> >>          at org.eclipse.jetty.io
> >> .ChannelEndPoint$2.run(ChannelEndPoint.java:118)
> >>          at
> >>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
> >>          at
> >>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
> >>          at
> >>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
> >>          at
> >>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
> >>          at
> >>
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
> >>          at
> >>
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
> >>          at
> >>
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
> >>          at java.lang.Thread.run(Thread.java:748)
> >>
> >> Thanks,
> >>
> >> --
> >> Mel Mason
> >> Software Engineer
> >> Bodleian Digital Library Systems and Services
> >> Osney One
> >> Mon-Thurs
> >>
> >> 01865 280031
> >> [hidden email]
> >>
> >>
>
Reply | Threaded
Open this post in threaded view
|

Re: JSON Facet doesn't allow date range facets

Joel Bernstein
So something like this should work:

[2000-05-01T00:00:01Z TO 2019-06-02T00:00:01Z]

Joel Bernstein
http://joelsolr.blogspot.com/


On Thu, Dec 12, 2019 at 7:08 AM Joel Bernstein <[hidden email]> wrote:

> With the DatePointField you can still do the range query, but I believe
> you'll need to specify the full ISO date string: 2000-05-01T01:01:01Z
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
>
> On Thu, Dec 12, 2019 at 6:46 AM Mel Mason <[hidden email]>
> wrote:
>
>> Unfortunately I need a date range field, e.g [2000-05-01 TO 2019-06-02].
>> DatePointFields can't represent that as far as I know.
>>
>> On 12/12/2019 11:40, Joel Bernstein wrote:
>> > There is a field type in the schema called pdate:
>> >
>> > <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
>> >
>> > This should work for you.
>> >
>> > The timeseries Streaming Expression uses the JSON facet API for range
>> > faceting and works really well.
>> >
>> >
>> >
>> >
>> > Joel Bernstein
>> > http://joelsolr.blogspot.com/
>> >
>> >
>> > On Thu, Dec 12, 2019 at 6:28 AM Mel Mason <[hidden email]>
>> > wrote:
>> >
>> >> Hi,
>> >>
>> >> I'm trying to have a range facet on a field of type
>> solr.DateRangeField.
>> >> As far as I can tell, this isn't possible with JSONFacet, only with the
>> >> old facet system - a quick google turns up several other people with
>> the
>> >> same problem. When using JSONFacet I get problems with this line of
>> >> code:
>> >>
>> >>
>> https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/search/facet/FacetRange.java#L255
>> >>
>> >> It looks like during the change to JSONFacet the range facets have been
>> >> restricted to only allow Trie or PointField fields. Is this likely to
>> be
>> >> fixed in future updates, or were there problems with using
>> >> DateRangeFields? I could use the old parameter facet system, but there
>> >> are features in JSONFacet I need.
>> >>
>> >> For completeness, the error I get:
>> >>
>> >> org.apache.solr.common.SolrException: Unable to range facet on
>> >> field:date_dtr
>> >>          at
>> >>
>> org.apache.solr.search.facet.FacetRangeProcessor.getCalcForField(FacetRange.java:238)
>> >>          at
>> >>
>> org.apache.solr.search.facet.FacetRangeProcessor.<init>(FacetRange.java:122)
>> >>          at
>> >>
>> org.apache.solr.search.facet.FacetRange.createFacetProcessor(FacetRange.java:65)
>> >>          at
>> >>
>> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:397)
>> >>          at
>> >>
>> org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:475)
>> >>          at
>> >>
>> org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:432)
>> >>          at
>> >>
>> org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
>> >>          at
>> >>
>> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
>> >>          at
>> >> org.apache.solr.search.facet.FacetModule.process(FacetModule.java:146)
>> >>          at
>> >>
>> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
>> >>          at
>> >>
>> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
>> >>          at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
>> >>          at
>> >> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
>> >>          at
>> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
>> >>          at
>> >>
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
>> >>          at
>> >>
>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
>> >>          at
>> >>
>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
>> >>          at
>> >>
>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
>> >>          at
>> >>
>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
>> >>          at
>> >>
>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
>> >>          at
>> >>
>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
>> >>          at
>> >>
>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>> >>          at
>> >>
>> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>> >>          at
>> >>
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>> >>          at org.eclipse.jetty.server.Server.handle(Server.java:502)
>> >>          at
>> >> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
>> >>          at
>> >>
>> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
>> >>          at org.eclipse.jetty.io
>> >> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
>> >>          at org.eclipse.jetty.io
>> >> .FillInterest.fillable(FillInterest.java:103)
>> >>          at org.eclipse.jetty.io
>> >> .ChannelEndPoint$2.run(ChannelEndPoint.java:118)
>> >>          at
>> >>
>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
>> >>          at
>> >>
>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
>> >>          at
>> >>
>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
>> >>          at
>> >>
>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
>> >>          at
>> >>
>> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
>> >>          at
>> >>
>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
>> >>          at
>> >>
>> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
>> >>          at java.lang.Thread.run(Thread.java:748)
>> >>
>> >> Thanks,
>> >>
>> >> --
>> >> Mel Mason
>> >> Software Engineer
>> >> Bodleian Digital Library Systems and Services
>> >> Osney One
>> >> Mon-Thurs
>> >>
>> >> 01865 280031
>> >> [hidden email]
>> >>
>> >>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: JSON Facet doesn't allow date range facets

Mel Mason
I need to store date ranges in the index. While DatePointField can be
queried using date ranges, the actual value can only be a single date -
it can't represent a range of dates as far as I know.

On 12/12/2019 12:11, Joel Bernstein wrote:

> So something like this should work:
>
> [2000-05-01T00:00:01Z TO 2019-06-02T00:00:01Z]
>
> Joel Bernstein
> http://joelsolr.blogspot.com/
>
>
> On Thu, Dec 12, 2019 at 7:08 AM Joel Bernstein <[hidden email]> wrote:
>
>> With the DatePointField you can still do the range query, but I believe
>> you'll need to specify the full ISO date string: 2000-05-01T01:01:01Z
>>
>> Joel Bernstein
>> http://joelsolr.blogspot.com/
>>
>>
>> On Thu, Dec 12, 2019 at 6:46 AM Mel Mason <[hidden email]>
>> wrote:
>>
>>> Unfortunately I need a date range field, e.g [2000-05-01 TO 2019-06-02].
>>> DatePointFields can't represent that as far as I know.
>>>
>>> On 12/12/2019 11:40, Joel Bernstein wrote:
>>>> There is a field type in the schema called pdate:
>>>>
>>>> <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
>>>>
>>>> This should work for you.
>>>>
>>>> The timeseries Streaming Expression uses the JSON facet API for range
>>>> faceting and works really well.
>>>>
>>>>
>>>>
>>>>
>>>> Joel Bernstein
>>>> http://joelsolr.blogspot.com/
>>>>
>>>>
>>>> On Thu, Dec 12, 2019 at 6:28 AM Mel Mason <[hidden email]>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I'm trying to have a range facet on a field of type
>>> solr.DateRangeField.
>>>>> As far as I can tell, this isn't possible with JSONFacet, only with the
>>>>> old facet system - a quick google turns up several other people with
>>> the
>>>>> same problem. When using JSONFacet I get problems with this line of
>>>>> code:
>>>>>
>>>>>
>>> https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/search/facet/FacetRange.java#L255
>>>>> It looks like during the change to JSONFacet the range facets have been
>>>>> restricted to only allow Trie or PointField fields. Is this likely to
>>> be
>>>>> fixed in future updates, or were there problems with using
>>>>> DateRangeFields? I could use the old parameter facet system, but there
>>>>> are features in JSONFacet I need.
>>>>>
>>>>> For completeness, the error I get:
>>>>>
>>>>> org.apache.solr.common.SolrException: Unable to range facet on
>>>>> field:date_dtr
>>>>>           at
>>>>>
>>> org.apache.solr.search.facet.FacetRangeProcessor.getCalcForField(FacetRange.java:238)
>>>>>           at
>>>>>
>>> org.apache.solr.search.facet.FacetRangeProcessor.<init>(FacetRange.java:122)
>>>>>           at
>>>>>
>>> org.apache.solr.search.facet.FacetRange.createFacetProcessor(FacetRange.java:65)
>>>>>           at
>>>>>
>>> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:397)
>>>>>           at
>>>>>
>>> org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:475)
>>>>>           at
>>>>>
>>> org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:432)
>>>>>           at
>>>>>
>>> org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
>>>>>           at
>>>>>
>>> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
>>>>>           at
>>>>> org.apache.solr.search.facet.FacetModule.process(FacetModule.java:146)
>>>>>           at
>>>>>
>>> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
>>>>>           at
>>>>>
>>> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
>>>>>           at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
>>>>>           at
>>>>> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
>>>>>           at
>>> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
>>>>>           at
>>>>>
>>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
>>>>>           at
>>>>>
>>> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>>>>>           at org.eclipse.jetty.server.Server.handle(Server.java:502)
>>>>>           at
>>>>> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
>>>>>           at org.eclipse.jetty.io
>>>>> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
>>>>>           at org.eclipse.jetty.io
>>>>> .FillInterest.fillable(FillInterest.java:103)
>>>>>           at org.eclipse.jetty.io
>>>>> .ChannelEndPoint$2.run(ChannelEndPoint.java:118)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
>>>>>           at
>>>>>
>>> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
>>>>>           at java.lang.Thread.run(Thread.java:748)
>>>>>
>>>>> Thanks,
>>>>>
>>>>> --
>>>>> Mel Mason
>>>>> Software Engineer
>>>>> Bodleian Digital Library Systems and Services
>>>>> Osney One
>>>>> Mon-Thurs
>>>>>
>>>>> 01865 280031
>>>>> [hidden email]
>>>>>
>>>>>
Reply | Threaded
Open this post in threaded view
|

Re: JSON Facet doesn't allow date range facets

Joel Bernstein
Searching on a single point in time would be extremely limiting because it
has millisecond precision. So range queries would be the only real way to
search the DatePointField.

I've used this construct many times on the DatePointField:

[2000-05-01T00:00:01Z TO 2019-06-02T00:00:01Z]


Joel Bernstein
http://joelsolr.blogspot.com/


On Thu, Dec 12, 2019 at 7:19 AM Mel Mason <[hidden email]>
wrote:

> I need to store date ranges in the index. While DatePointField can be
> queried using date ranges, the actual value can only be a single date -
> it can't represent a range of dates as far as I know.
>
> On 12/12/2019 12:11, Joel Bernstein wrote:
> > So something like this should work:
> >
> > [2000-05-01T00:00:01Z TO 2019-06-02T00:00:01Z]
> >
> > Joel Bernstein
> > http://joelsolr.blogspot.com/
> >
> >
> > On Thu, Dec 12, 2019 at 7:08 AM Joel Bernstein <[hidden email]>
> wrote:
> >
> >> With the DatePointField you can still do the range query, but I believe
> >> you'll need to specify the full ISO date string: 2000-05-01T01:01:01Z
> >>
> >> Joel Bernstein
> >> http://joelsolr.blogspot.com/
> >>
> >>
> >> On Thu, Dec 12, 2019 at 6:46 AM Mel Mason <[hidden email]>
> >> wrote:
> >>
> >>> Unfortunately I need a date range field, e.g [2000-05-01 TO
> 2019-06-02].
> >>> DatePointFields can't represent that as far as I know.
> >>>
> >>> On 12/12/2019 11:40, Joel Bernstein wrote:
> >>>> There is a field type in the schema called pdate:
> >>>>
> >>>> <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
> >>>>
> >>>> This should work for you.
> >>>>
> >>>> The timeseries Streaming Expression uses the JSON facet API for range
> >>>> faceting and works really well.
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> Joel Bernstein
> >>>> http://joelsolr.blogspot.com/
> >>>>
> >>>>
> >>>> On Thu, Dec 12, 2019 at 6:28 AM Mel Mason <
> [hidden email]>
> >>>> wrote:
> >>>>
> >>>>> Hi,
> >>>>>
> >>>>> I'm trying to have a range facet on a field of type
> >>> solr.DateRangeField.
> >>>>> As far as I can tell, this isn't possible with JSONFacet, only with
> the
> >>>>> old facet system - a quick google turns up several other people with
> >>> the
> >>>>> same problem. When using JSONFacet I get problems with this line of
> >>>>> code:
> >>>>>
> >>>>>
> >>>
> https://github.com/apache/lucene-solr/blob/master/solr/core/src/java/org/apache/solr/search/facet/FacetRange.java#L255
> >>>>> It looks like during the change to JSONFacet the range facets have
> been
> >>>>> restricted to only allow Trie or PointField fields. Is this likely to
> >>> be
> >>>>> fixed in future updates, or were there problems with using
> >>>>> DateRangeFields? I could use the old parameter facet system, but
> there
> >>>>> are features in JSONFacet I need.
> >>>>>
> >>>>> For completeness, the error I get:
> >>>>>
> >>>>> org.apache.solr.common.SolrException: Unable to range facet on
> >>>>> field:date_dtr
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.search.facet.FacetRangeProcessor.getCalcForField(FacetRange.java:238)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.search.facet.FacetRangeProcessor.<init>(FacetRange.java:122)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.search.facet.FacetRange.createFacetProcessor(FacetRange.java:65)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:397)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.search.facet.FacetProcessor.processSubs(FacetProcessor.java:475)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.search.facet.FacetProcessor.fillBucket(FacetProcessor.java:432)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.search.facet.FacetQueryProcessor.process(FacetQuery.java:64)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.search.facet.FacetRequest.process(FacetRequest.java:401)
> >>>>>           at
> >>>>>
> org.apache.solr.search.facet.FacetModule.process(FacetModule.java:146)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:298)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)
> >>>>>           at
> org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)
> >>>>>           at
> >>>>> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)
> >>>>>           at
> >>> org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)
> >>>>>           at
> >>>>>
> >>>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> >>>>>           at org.eclipse.jetty.server.Server.handle(Server.java:502)
> >>>>>           at
> >>>>> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
> >>>>>           at org.eclipse.jetty.io
> >>>>>
> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
> >>>>>           at org.eclipse.jetty.io
> >>>>> .FillInterest.fillable(FillInterest.java:103)
> >>>>>           at org.eclipse.jetty.io
> >>>>> .ChannelEndPoint$2.run(ChannelEndPoint.java:118)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
> >>>>>           at
> >>>>>
> >>>
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
> >>>>>           at java.lang.Thread.run(Thread.java:748)
> >>>>>
> >>>>> Thanks,
> >>>>>
> >>>>> --
> >>>>> Mel Mason
> >>>>> Software Engineer
> >>>>> Bodleian Digital Library Systems and Services
> >>>>> Osney One
> >>>>> Mon-Thurs
> >>>>>
> >>>>> 01865 280031
> >>>>> [hidden email]
> >>>>>
> >>>>>
>