[英]ElasticSearch with hunspell analyzer
我想在ElasticSearch中创建一个索引,该索引存储具有某些字符串字段的特定类型的数据。 语言是匈牙利语。
我使用以下主体运行了HTTP PUT命令:
{
"settings" : {
"analysis" : {
"analyzer" : {
"hu" : {
"tokenizer" : "standard",
"filter" : [ "lowercase", "hu_HU" ]
}
},
"filter" : {
"hu_HU" : {
"type" : "hunspell",
"locale" : "hu_HU",
"language" : "hu_HU"
}
}
}
},
"mappings": {
"printedArticle": {
"_source": {"enabled": false},
"properties": {
"_id": {"type": "string", "store": true},
"mysqlid": {"type": "long", "store": false},
"publishDate": {"type": "date", "format": "dateOptionalTime", "store": false},
"title": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
"lead": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
"content": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
"participants": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
"authors": {"type": "string", "analyzer": "hu", "analyze": true, "store": false},
"subtitle": {"type": "string", "analyzer": "hu", "analyze": true, "store": false}
}
}
}
}
然后,我插入了一条包含一些测试文本的记录,并且如果我通过带有这样的GET请求的Elastic API运行搜索:
http://localhost:9200/mf_pa/_search?q=MYTESTTEXT
仅当我的测试文本与记录中的单词之一相等时,它才会找到我的记录。
我试图通过分析API分析一些类似的文本:
http://localhost:9200/mf_pa/_analyze?analyzer=hu&text=My text to tokenize
并正确标记了我的测试文本。 基于这个事实,我希望如果将先前找到的标记放入搜索查询中,它将找到记录,但没有找到。
对于一个英语示例,我会说我的文字是“令人难忘”,而我的查询是“忘记”。 我应该怎么做才能找到记录?
如果分析器使用Analyze API进行测试,则它也应在映射中起作用。 这里有一些要检查的东西:
确保已成功输入映射。 GET /mf_pa/_mapping
例如, "analyze": true
应为"index": "analyzed"
确保测试文档实际上正确地被索引为printedArticle
类型。
GET /mf_pa/_search
应该返回显示 "_type": "printedArticle"
测试文档 。
您还可以使用Analyze API来验证文本如何针对特定字段进行分析(以确保将分析器正确应用于该字段)
例如GET /mf_pa/_analyze/?field=title&text=A kőszivű ember fiai
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.