我有一些文件包含标题中使用标准分析器的c#或c ++。 当我在标题字段上查询c#时,我得到了所有c#和C ++文档,而c ++文档甚至比c#文档得分更高。这是有道理的,因为这两个'#'和' ++'标准分析器从令牌中删除。
处理这种特殊条款的最佳方法是什么?在我的具体情况下,我希望c#文档在搜索" C#"时获得比c ++文档更高的分数。
答案 0 :(得分:0)
您可以使用以下方法:
介绍copy-field,其中包含具有特殊字符的值。为此,您需要:
介绍custom analyzer(此处sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install gstreamer0.10-ffmpeg
标记符很重要 - 它会保留您的特殊字符):
whitespace
创建copy-field(PUT my_index
{
"settings":{
"analysis":{
"analyzer":{
"my_analyzer":{
"type":"custom",
"tokenizer":"whitespace",
"filter":[
"lowercase"
]
}
}
}
}
}
后缀代表特殊字符'):
_wcc
在发出查询本身时,您会将查询与针对PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"prog_lang": {
"type": "text",
"copy_to": "prog_lang_wcc",
"analyzer": "standard"
},
"prog_lang_wcc": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}
字段的boost相结合(可以是多匹配或纯布尔+提升):
prog_lang_wcc