python - 分析器在 Elasticsearch 中忽略重音和复数单数
问题描述
当我进行搜索查询时,我正在努力忽略重音和复数/单数。我从这里复制了西班牙语分析器,只留下了词干分析器https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html
您可以在 Python 中检查我的代码(我从 CSV 后者批量处理数据):
settings={
"settings": {
"analysis": {
"filter": {
"spanish_stemmer": {
"type": "stemmer",
"language": "light_spanish"
}
},
"analyzer": {
"rebuilt_spanish": {
"tokenizer": "standard",
"filter": [
"lowercase",
"spanish_stemmer"
]
}
}
}
}
}
es.indices.create(index="activities", body=settings)
但是,当我尝试从失眠症中进行 GET 查询时geometrico
,geométrico
我得到 0 个结果geométricos
,geometricos
并且有一个带有 Title 的文档Cuerpos geométricos
。它应该匹配,因为我想对重音和复数单数没有区别。有任何想法吗?
我做的 GET 查询:
{
"query": {
"function_score": {
"query": {
"multi_match": {
"query": "geométricos",
"fields": [
"Descripcion",
"Nombre",
"Tags"
],
"analyzer":"rebuilt_spanish"
}
}
}
}
}
解决方案
您需要在此处ASCII folding token filter
添加到您的令牌过滤器检查官方文档。所以你应该是这样的:Analyzer
分析者:
"analysis": {
"filter": {
"spanish_stemmer": {
"type": "stemmer",
"language": "light_spanish"
}
},
"analyzer": {
"rebuilt_spanish": {
"tokenizer": "standard",
"filter": [
"asciifolding", // ASCII folding token filter
"lowercase",
"spanish_stemmer"
]
}
}
}
}
推荐阅读
- javascript - 我正在尝试从我的电子表格中获取图表以使用谷歌脚本发送电子邮件,但 getAs() 函数不起作用
- r - 您如何使用 R 解析 txt 文件以验证元数据数据是否存在
- amazon-web-services - 使用 ElasticBeanStalk 在单独的 EC2 实例上运行 Sidekiq
- php - Laravel 工厂如何定义 $factory 变量?
- mysql - 我们如何在mysql查询中将数据与以前的日期数据进行比较
- grafana - influxdb 查询:如果值高于某个值,是否可以返回名称?
- python-3.x - 什么是 ssl 认证错误,下面的代码有什么作用?
- google-cloud-platform - 如何从快照创建 Google Cloud AI Platform Notebook?
- python - 在二维数组中查找给定特定坐标的邻居
- php - 提交表单时,我不断收到错误消息。页面有效,但消息