solr中schema.xml中域的omitNorm属性

今天在测试一个solr的排序问题的时候,突然建立不了索引了,我用的分布式的solrCloud(4.7.2版本),报一个异常—— org.apache.solr.client.solrj.impl.CloudSolrServer$RouteException: ERROR: [doc=0] cannot set an index-time boost, unindexed or norms are omitted for field cat: cat,大意是对于不建立索引或者标准因子忽略的域不能使用boost,然后我看了一下我的scheme.xml中cat域的配置

<field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>

确实没有写omitNorm的属性, 从这里可以总结出,如果不写的话默认就是true,即忽略标准因子。此时如果再在这个域中设置boost,就会抛那个异常

for(int i=0;i<10;i++){
	SolrInputDocument d = new SolrInputDocument();
//	d.setDocumentBoost(i);
	d.addField("id", i);
	d.addField("cat", "cat",i);//用i作为标准因子,结果报错了,问题就出在这里,
	list.add(d);
}

 所以如果一个域要使用标准银子的话必须要手动的设置omitNorm= false才可以,不然就会报错。

此处很容易要联想到另一个地方,即可以在document层面设置boost,如果这样做的话,对于设置和没有设置omitNorm的域会有什么结果呢?我自己做了一下实验,结论如下:

1、如果这个域设置了omitNorm=true,即忽略标准银子,则在使用这个域进行查询的时候标准银子不会有作用,但是不会抛异常。

2、如果设置了omitNorm=false,即不忽略标准银子,则在使用这个域进行查询的时候标准银子会起作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值