如何为搜索和索引指定相同的分析器

c9x0cxw0  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(334)

我在做一个西班牙语搜索引擎(我不会说西班牙语),但根据我的研究,目标大致是这样的:1。过滤像“dos”,“de”,“la”这样的停止词。。。2为搜索和索引而干掉单词。e、 如果你搜索“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”时,它只显示“primera”的精确匹配。有什么建议吗?
可能的修复方法,但我还没有弄清楚语法:
使用内置 "spanish" 过滤器中的分析仪。语法是什么?
在中添加西班牙语词干分析器和stopwords "default_search" . 但我不知道如何使用复合设置。

mzsu5hc0

mzsu5hc01#

添加索引数据、Map、搜索查询和搜索结果的工作示例
索引Map:

{
  "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"
        }
      }
    ]

相关问题