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上搜索)