Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Filter Elasticsearch同义词分析器不工作_Filter_Analyzer_Synonym_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Filter,Analyzer,Synonym,elasticsearch" /> elasticsearch,Filter,Analyzer,Synonym,elasticsearch" />

Filter Elasticsearch同义词分析器不工作

Filter Elasticsearch同义词分析器不工作,filter,analyzer,synonym,elasticsearch,Filter,Analyzer,Synonym,elasticsearch,编辑:为了补充这一点,同义词似乎在处理基本的查询字符串查询 "query_string" : { "default_field" : "location.region.name.raw", "query" : "nh" } 这将返回新罕布什尔州的所有结果,但对“nh”的“匹配”查询不会返回任何结果 我试图在弹性索引中的位置字段中添加同义词,这样,如果我对“Mass”、“Ma”或“Massachusetts”进行位置搜索,每次都会得到相同的结果。我在设置中添加了同义词过滤器,并

编辑:为了补充这一点,同义词似乎在处理基本的查询字符串查询

"query_string" : {
    "default_field" : "location.region.name.raw",
    "query" : "nh"
}
这将返回新罕布什尔州的所有结果,但对“nh”的“匹配”查询不会返回任何结果


我试图在弹性索引中的位置字段中添加同义词,这样,如果我对“Mass”、“Ma”或“Massachusetts”进行位置搜索,每次都会得到相同的结果。我在设置中添加了同义词过滤器,并更改了位置映射。以下是我的设置:

analysis":{
    "analyzer":{
        "synonyms":{
            "filter":[
                "lowercase",
                "synonym_filter"
            ],
        "tokenizer": "standard"
    }
},
"filter":{
    "synonym_filter":{
        "type": "synonym",
        "synonyms":[
            "United States,US,USA,USA=>usa",
            "Alabama,Al,Ala,Ala",
            "Alaska,Ak,Alas,Alas",
            "Arizona,Az,Ariz",
            "Arkansas,Ar,Ark",
            "California,Ca,Calif,Cal",
            "Colorado,Co,Colo,Col",
            "Connecticut,Ct,Conn",
            "Deleware,De,Del",
            "District of Columbia,Dc,Wash Dc,Washington Dc=>Dc",
            "Florida,Fl,Fla,Flor",
            "Georgia,Ga",
            "Hawaii,Hi",
            "Idaho,Id,Ida",
            "Illinois,Il,Ill,Ills",
            "Indiana,In,Ind",
            "Iowa,Ia,Ioa",
            "Kansas,Kans,Kan,Ks",
            "Kentucky,Ky,Ken,Kent",
            "Louisiana,La",
            "Maine,Me",
            "Maryland,Md",
            "Massachusetts,Ma,Mass",
            "Michigan,Mi,Mich",
            "Minnesota,Mn,Minn",
            "Mississippi,Ms,Miss",
            "Missouri,Mo",
            "Montana,Mt,Mont",
            "Nebraska,Ne,Neb,Nebr",
            "Nevada,Nv,Nev",
            "New Hampshire,Nh=>Nh",
            "New Jersey,Nj=>Nj",
            "New Mexico,Nm,N Mex,New M=>Nm",
            "New York,Ny=>Ny",
            "North Carolina,Nc,N Car=>Nc",
            "North Dakota,Nd,N Dak, NoDak=>Nd",
            "Ohio,Oh,O",
            "Oklahoma,Ok,Okla",
            "Oregon,Or,Oreg,Ore",
            "Pennsylvania,Pa,Penn,Penna",
            "Rhode Island,Ri,Ri & PP,R Isl=>Ri",
            "South Carolina,Sc,S Car=>Sc",
            "South Dakota,Sd,S Dak,SoDak=>Sd",
            "Tennessee,Te,Tenn",
            "Texas,Tx,Tex",
            "Utah,Ut",
            "Vermont,Vt",
            "Virginia,Va,Virg",
            "Washington,Wa,Wash,Wn",
            "West Virginia,Wv,W Va, W Virg=>Wv",
            "Wisconsin,Wi,Wis,Wisc",
            "Wyomin,Wi,Wyo"
        ]
    }
}
以及location.region字段的映射:

"region":{
    "properties":{
        "id":{"type": "long"},
        "name":{
            "type": "string",
            "analyzer": "synonyms",
            "fields":{"raw":{"type": "string", "index": "not_analyzed" }}
        }
    }
}
但是同义词分析器似乎什么也没做。例如,此查询:

"match" : {
    "location.region.name" : {
        "query" : "Massachusetts",
        "type" : "phrase",
        "analyzer" : "synonyms"
    }
}

这将返回数百个结果,但如果我将“Massachusetts”替换为“Ma”或“Mass”,则得到0个结果。为什么不工作?

过滤器的顺序是

filter":[
    "lowercase",
    "synonym_filter"
]
因此,如果elasticsearch首先将标记“小写”,当它执行第二步时,
同义词过滤器
,它将不匹配您定义的任何条目


为了解决这个问题,我将以小写形式定义同义词

您还可以将同义词过滤器定义为不区分大小写:

"filter":{ "synonym_filter":{ "type": "synonym", "ignore_case" : "true", "synonyms":[ ... ] } } “过滤器”:{ “同义词过滤器”:{ “类型”:“同义词”, “忽略案例”:“正确”, “同义词”:[ ... ] } }
我想问一个关于过滤器工作机制的问题。过滤器在分析器中是如何工作的?在本例中,小写筛选工作和返回标记和标记由同义词_filter获取,同义词_筛选工作和返回新的筛选标记。这个场景是正确的还是如何正确的?是的,您描述的场景是正确的:)通常,执行标记器(在本例中为标准标记器),然后按照定义的顺序进行标记过滤器(在本例中,首先是小写,然后是同义词过滤器)。文档解释得很好
ignore\u现在不推荐使用案例