如何在apache solr中获取特定时期的数据

时间:2014-11-14 13:37:39

标签: solr

我希望在solr中获得一段时间的记录

我的网址是

http://localhost:8090/solr/select?q=xyz=Vehicles per KM of record Road&version=2.2&start=0&rows=200&indent=on&omitHeader=true&wt=json&sort=timestamp desc

我的回答是

{
    "response": {
        "numFound": 4,
        "start": 0,
        "docs": [
            {                
                 "xyz": "some record one",
                 "ids": "an22f17b87-3c75-4b77-9300-9039a9fe63f2", 
                 "timestamp": "2014-11-07T10:41:29.544Z",
                 "id": [
                    "e1d1865-1402-ef20-6880-9262d6e7d22"
                 ]
            },
            {                
                 "xyz": "some record two", 
                 "ids": "an22f17b87-3c75-4b77-9300-9039a9fe63f2",
                 "timestamp": "2014-11-06T10:34:53.799Z",
                 "id": [
                    "99eab5aa-c83b-e90b-e548-6d09e94c9ba2"
                ]
            },
            {                
                "xyz": "some record three",              
                "ids": "an22f17b87-3c75-4b77-9300-9039a9fe63f2",
                "timestamp": "2014-11-03T09:05:45.521Z",
                "id": [
                    "84fba82a-2ae6-eaa8-1b37-79c842c9e96"
                ]
            },
            {                
                "xyz": "some record four",              
                "ids": "an22f17b87-3c75-4b77-9300-9039a9fe63f2",
                "timestamp": "2014-11-01T09:05:45.521Z",
                "id": [
                    "84fba82a-2ae6-eaa8-1b37-79c842c9e96"
                ]
            }

        ]
    }
}
  

我遇到了一些问题

1.我的搜索查询句子是"车辆每KM的记录道路"。 但我得到的记录并不存在。

它假设只有一个记录

 {                
                "xyz": "Vehicles per KM of record Road",              
                "ids": "an22f17b87-3c75-4b77-9300-9039a9fe63f2",
                "timestamp": "2014-11-01T09:05:45.521Z",
                "id": [
                    "84fba82a-2ae6-eaa8-1b37-79c842c9e96"
                ]
            }

2.我想获得特定时期的记录 例如2014-11-08至2014-11-05

在这种情况下,只应该有两个记录

  {                
                 "xyz": "some record one",
                 "ids": "an22f17b87-3c75-4b77-9300-9039a9fe63f2", 
                 "timestamp": "2014-11-07",
                 "id": [
                    "e1d1865-1402-ef20-6880-9262d6e7d22"
                 ]
            },
            {                
                 "xyz": "some record two", 
                 "ids": "an22f17b87-3c75-4b77-9300-9039a9fe63f2",
                 "timestamp": "2014-11-06",
                 "id": [
                    "99eab5aa-c83b-e90b-e548-6d09e94c9ba2"
                ]
            }

但我得到了所有记录 请帮帮我

1 个答案:

答案 0 :(得分:1)

根据字段类型,第二个问题应该是日期间隔过滤器(只要它的日期字段..虽然它可能也适用于字符串字段):

timestamp:[2014-11-05 TO 2014-11-09]

您可能需要调整这些值以获得正确的截止(但我认为11-09应该是2014-11-09 00:00:00,这意味着只应包括早于该日期的条目)。

对于第一部分,它取决于您的查询解析器。如果解析器为dismax,则mm子句和默认布尔运算符将确定搜索的完成方式。您不希望xyz=存在,除非您正在搜索的数据(在特定字段中搜索将是field:)。

使用Solr管理中的分析页面查看您为什么不匹配您正在寻找的内容(输入索引的内容和搜索字符串,这可以让您更详细地了解Solr是什么为每个步骤做内部工作)。