solr的copyFeild用法(改变各个feild的权重,修改打分结果)-注意!

时间:2021-11-24 19:56:48

copyField的dest字段all本身有分析器处理:假设为mmseg4j

name,title,description三个字段都复制到all字段上:其中title和description都是mmseg4j分析器的字段类型;name是string类型;

搜索all上的“黄海波视频”-------------则出现的结果是:

'parsedquery'=>'(+DisjunctionMaxQuery((((personName:黄海波视频)^10.0) | (description:黄海波 description:视频) | ((title:黄海波 title:视频)^1.5))) DisjunctionMaxQuery((all:"黄海波 视频")))/no_coord',

结果是;personName只有黄海波,因此导致针对personName提高权重这个指标就没有起作用!!


------------------------------------------------------------------------------------------------------

解决办法:把name字段的fieldType也修改为mmseg4j的分析器的feildType:

搜索all上的“黄海波视频”-------------则出现的结果是:

'parsedquery'=>'(+DisjunctionMaxQuery((((personName:黄海波 personName:视频)^10.0) | (description:黄海波 description:视频) | ((title:黄海波 title:视频)^1.5))) DisjunctionMaxQuery((all:"黄海波 视频")))/no_coord',

结论是:personName能搜索到结果,权重自然起作用!!

说明:copyfeild的搜索中,仍然是分别将搜索串放在被复制的feild中去搜索,而且采用的分析器不是all的分析器而是被复制的各个feild自己的分析器来处理。(query串都会采用被复制的source feild中分析器处理后再在该feild上搜索)