我正在使用西班牙语搜索引擎。(我不会说西班牙语),但根据我的研究,目标或多或少是这样的:1.过滤掉诸如“ dos”,“ de”,“ la”之类的停用词... 2.阻止两个搜索词和索引。例如,如果您搜索“ primera”,则还将显示“ primero”,“ primer”。
我的尝试:
es_analyzer={
"settings": {
"analysis": {
"filter": {
"spanish_stop": {
"type": "stop",
"stopwords": "_spanish_"
},
"spanish_stemmer": {
"type": "stemmer",
"language": "spanish"
}
},
"analyzer": {
"default_search": {
"type": "spanish"
},
"rebuilt_spanish": {
"tokenizer": "standard",
"filter": [
"lowercase",
"spanish_stop",
"spanish_stemmer"
]
}
}
}
}
}
问题:当在中使用"type":"spanish"
时"default_search"
,我的查询“ primera”会被阻止为“ primer”,这是正确的,但是即使我指定"spanish_stemmer"
在过滤器中使用,也不会阻止索引中的文档。因此,当我搜索“ primera”时,它仅显示“ primer”的完全匹配项。有什么解决的建议吗?
可能的解决方法,但我还没有弄清楚语法:
"spanish"
在过滤器中使用内置分析仪。语法是什么?"default_search"
。但我不知道如何在其中使用复合设置。添加带有索引数据,映射,搜索查询和搜索结果的工作示例
索引映射:
{
"settings": {
"analysis": {
"filter": {
"spanish_stop": {
"type": "stop",
"stopwords": "_spanish_"
},
"spanish_stemmer": {
"type": "stemmer",
"language": "spanish"
}
},
"analyzer": {
"default_search": {
"type":"spanish",
"tokenizer": "standard",
"filter": [
"lowercase",
"spanish_stop",
"spanish_stemmer"
]
}
}
}
},
"mappings":{
"properties":{
"title":{
"type":"text",
"analyzer":"default_search"
}
}
}
}
索引数据:
{
"title": "primer"
}
{
"title": "primera"
}
{
"title": "primero"
}
搜索查询:
{
"query":{
"match":{
"title":"primer"
}
}
}
搜索结果:
"hits": [
{
"_index": "stof_64420517",
"_type": "_doc",
"_id": "3",
"_score": 0.13353139,
"_source": {
"title": "primer"
}
},
{
"_index": "stof_64420517",
"_type": "_doc",
"_id": "1",
"_score": 0.13353139,
"_source": {
"title": "primera"
}
},
{
"_index": "stof_64420517",
"_type": "_doc",
"_id": "2",
"_score": 0.13353139,
"_source": {
"title": "primero"
}
}
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句