当查询词中包含特殊字符时,范围查询如何工作?

时间:2020-04-08 20:22:01

标签: solr lucene

已推荐thisthis

查询:

rang:[16-03-08 TO 16-04-08]

我正在使用standard tokenizer and lower case filter作为名称字段。字段类型为text

由于它是标准的令牌生成器,因此16-03-08将被令牌化为160308,与其他1604类似,08

范围查询如何工作?

1 个答案:

答案 0 :(得分:0)

这是我用来说明的示例数据。

{
    "id":"1",
    "RangeField":"16-03-08",
    "DateField" :"2018-11-21"
},
{
    "id":"2",
    "RangeField":"16-04-08",
    "DateField" :"2019-01-11"
},
{
    "id":"3",
    "RangeField":"16-06-08",
    "DateField" :"2019-04-19"
},
{
    "id":"4",
    "RangeField":"16-07-08",
    "DateField" :"2019-08-24"
},
{
    "id":"5",
    "RangeField":"16-08-08",
    "DateField" :"2019-11-29"
}

以下是schema.xml

中定义的字段
<field name="RangeField" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="DateField" type="date" indexed="true" stored="true" multiValued="false"/>

这是执行的查询

http://localhost:8983/solr/TestDemo4/select?fl=RangeField,DateField&q=RangeField:[16-03-08%20TO%2016-06-08]

请参阅屏幕截图以获取答复。

enter image description here

这是日期字段上的第二个查询。

http://localhost:8983/solr/TestDemo4/select?fl=RangeField,DateField&q=DateField:[2018-11-08T00:00:00Z%20TO%202019-08-30T23:59:59Z]

请参阅屏幕截图以获取答复。

enter image description here

如果您有数字数据,请使用int作为字段类型,而不是字符串,这样在排序时就不会产生任何问题。

相关问题