【问题标题】:check solr facet query if it is greater than specific datetime value检查 solr 方面查询是否大于特定的日期时间值
【发布时间】:2011-12-20 05:11:45
【问题描述】:

我在 solr 中有以下内容

22011-11-01 13:40:08.0苛刻的 Snehanshu | Apoorv 耆那教

现在如果我想搜索jain,我将使用此查询

http://192.168.1.135:8888/solr/MyCol/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&fq=person:jain

现在的问题是:我如何搜索在(大于)2011-11-01 13:00:00 或(在 2011-11-01 12:30:00 和2011-11-01 13:30:00)??
感谢您的帮助

【问题讨论】:

    标签: solr facet faceted-search


    【解决方案1】:

    解析后的字段需要定义为datefield

    例如

    schema.xml -

    TrieDateField 的字段类型应该可用 -

    <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
    

    将 tdate 字段类型的 prased 字段映射为 -

    <field name="parsed" type="tdate" indexed="true" stored="true"/>
    

    因此,当被索引时,它的响应将显示为&lt;date name="parsed"&gt;2009-04-28T00:00:00Z&lt;/date&gt;

    这将允许您使用date filter queries 作为日期字段。

    例如fq=parsed:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]

    对于搜索,最好使用q=person:jain
    使用过滤查询来限制文档而不是搜索。

    【讨论】:

    • 请原谅我在 solr 方面的有限知识:我添加了 但它给了我"Unknown fieldtype 'datefield' specified on field parsed" 什么是正确的语法?谢谢
    • :( 我正在测试 100 个文档(只是作为测试)......现在在添加了你上面告诉我的内容之后......我得到了: 索引已完成。添加/已更新:0 个文档。已删除 0 个文档。100 谢谢
    • 索引过程中有什么异常?
    • 我已经编辑了问题以包含响应,因为它大于评论限制
    • 你能检查一下 tomcat/jetty 的日志,它会告诉你异常吗?
    【解决方案2】:

    这些查询参数应该可以工作(没有经过测试,也没有 url 转义

    facet.field=parsed
    f.parsed.facet.range.start=2011-11-01T12:30:00Z
    f.parsed.facet.range.end=2011-11-01T13:30:00Z
    

    解释:

    • facet.field=parsed 启用字段parsed 中的分面。
    • f.parsed.facet.range.start/end 定义该字段的下限和上限。
    • 日期应采用 ISO 8601 格式,但也允许使用“日期数学”表达式,如 NOW+1YEAR

    有关详细信息,请参阅Solr documentation 中的Facet by Range部分。

    【讨论】:

      猜你喜欢
      • 2017-03-13
      • 2014-08-26
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 2021-12-18
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多