搜索引擎(Solr-索引详解)

  时间字段类型特别说明
  
  Solr中提供的时间字段类型( DatePointField, DateRangeField,废除的TrieDateField )是以时间毫秒数来存储时间的。
  
  要求字段值以ISO-8601标准格式来表示时间:YYYY-MM-DDThh:mm:ssZ
  
  Z表示是UTC时间(注意:就没有时区了)。1999-05-20T17:33:18Z
  
  秒上可以带小数来表示毫秒,超出精度部分会被忽略:
  
  1972-05-20T17:33:18.772Z
  
  1972-05-20T17:33:18.77Z
  
  1972-05-20T17:33:18.7Z
  
  公元前:在前面加减号 - 9999后,在前面加加号 +
  
  注意:查询时如果是直接的时间串,需要用转移符转义:
  
  datefield:1972-05-20T17\:33\:18.772Z
  
  datefield:"1972-05-20T17:33:18.772Z"
  
  datefield:[1972-05-20T17:33:18.772Z TO *]
  
  DateRangeField 时间段类型特别说明
  
  DateRangeField用来支持对时间段数据的索引,它遵守上一页讲到的时间格式,支持两种时间段表示方式:
  
  方式一:截断日期,它表示整个日期跨度的精确指示。
  
  方式二:范围语法 [ TO ] { TO }
  
  2000-11 表示2000年11月整个月.
  
  2000-11T13 表示200年11月每天的13点这一个小时
  
  -0009 公元前10年,0000是公元前1年。
  
  [2000-11-01 TO 2014-12-01] 日到日
  
  [2014 TO 2014-12-01] 2014年开始到2014-12-01止.
  
  [* TO 2014-12-01] 2014-12-01(含)前.
  
  时间数学表达式
  
  Solr中还支持用 NOW +- 时间的数学表达式来灵活表示时间。语法 NOW +- 带单位的时间数,/单位 截断。可用来表示时间段。
  
  NOW+2MONTHS
  
  NOW-1DAY
  
  NOW/HOUR
  
  NOW+6MONTHS+3DAYS/DAY
  
  1972-05-20T17:33:18.772Z+6MONTHS+3DAYS/DAY
  
  NOW在查询中使用时,可为NOW指定值
  
  q=solr&fq=start_date:[* TO NOW]&NOW=1384387200000
  
  EnumFieldType 枚举字段类别说明
  
  EnumFieldType 用于字段值是一个枚举集,且排序顺序可预定的情况,如新闻分类这样的字段。定义非常简单:
  
  <fieldType name="priorityLevel" class="solr.EnumFieldType" docValues="true" enumsConfig="enumsConfig.xml" enumName="priority"/>
  
  enumsConfig:指定枚举值的配置文件,绝对路径或相对 内核conf/的相对路径
  
  enumName:指定配置文件的枚举名。排序顺序是按配置的顺序。
  
  docValues : 枚举类型字段必须设置 true;
  
  枚举配置示例
  
  <?xml version="1.0" ?>
  
  <enumsConfig>
  
  <enum name="priority">
  
  <value>Not Available</value>
  
  <value>Low</value>
  
  <value>Medium</value>
  
  <value>High</value>
  
  <value>Urgent</value>
  
  </enum>
  
  <enum name="risk">
  
  <value>Unknown<www.dasheng178.com /value>
  
  <value>Very Low</value>
  
  <value>Low<www.mcyllpt.com www.tiaotiaoylzc.com/ /value>
  
  <value>Medium<www.mushi157.com /value>
  
  <value>High</value>
  
  <value>Critical</value>
  
  </enum>
  
  </enumsConfig>
  
  练习4 定义Field
  
  prodId:商品id,字符串,不索引、存储;
  
  name: 商品名称,字符串,分词、索引、存储
  
  simpleIntro:商品简介,字符串,分词、索引、不存储
  
  price:价格,整数(单位分),索引,存储
  
  uptime:上架时间,索引、docValues 支持排序
  
  <field name=“” type=“”www.fengshen157.com default=“www.michenggw.com ” indexed="true" stored="true"/>
  
  dynamic Field 动态字段
  
  问:如果模式中有近百个字段需要定义,其中有很多字段的定义是相同,重复地定义是不是很烦?
  
  可不可以定一个规则,字段名以某前缀开头或结尾的是相同的定义配置,那这些重复字段就只需要配置一个,保证提交的字段名称遵守这个前缀、后缀即可。
  
  这就是动态字段。
  
  如:整型字段都是一样的定义,则可以定义一个动态字段如下:
  
  <dynamicField name="*_i" type=“my_int" indexed="true" stored="true"/>
  
  也可以是前缀,如 name=“i_*”

转载于:https://www.cnblogs.com/qwangxiao/p/10403642.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值