是否有 elasticsearch 的词干分析器可以将 "broken" 更改为 "break"
Is there a stemmer for elasticsearch that can change "broken" to "break"
以下是我希望词干分析器执行的操作:
破:破
破:破
破:破
进入:进入
进入:进入
输入:输入
我对该字段进行了如下索引:
"body":{
"type": "text",
"fields":{
"stemmed":{
"type": "text",
"analyzer": "english"
}
}
}
当我查询“闯入”时,可以看到在body.stemmed字段中搜索的是:"break and enter"。看起来不错。
但是,当我查询“打破并进入”时,我得到:“打破并进入”。因此,显然,当使用 "english" 词干分析器时,“broke”不会变成“break”。
同样,“破门而入”变成:“破门而入”。因此,ES 显然不会将“broke”或“broken”更改为“break”(据此:snowball,我想解释了为什么使用它)。
那么,有没有一种方法可以指定 "known" 词干分析器来完成我想要做的事情?
Dictionary Stemmer 可以满足您的要求,它可以在字典中查找词干。算法词干分析器在不了解词根的情况下提取词干,它们只是通过算法来完成。
看看 Hunspell 词干分析器,认为它可以完成这项工作:
https://www.elastic.co/guide/en/elasticsearch/guide/current/hunspell.html
以下是我希望词干分析器执行的操作: 破:破 破:破 破:破 进入:进入 进入:进入 输入:输入
我对该字段进行了如下索引: "body":{ "type": "text", "fields":{ "stemmed":{ "type": "text", "analyzer": "english" } } }
当我查询“闯入”时,可以看到在body.stemmed字段中搜索的是:"break and enter"。看起来不错。 但是,当我查询“打破并进入”时,我得到:“打破并进入”。因此,显然,当使用 "english" 词干分析器时,“broke”不会变成“break”。 同样,“破门而入”变成:“破门而入”。因此,ES 显然不会将“broke”或“broken”更改为“break”(据此:snowball,我想解释了为什么使用它)。
那么,有没有一种方法可以指定 "known" 词干分析器来完成我想要做的事情?
Dictionary Stemmer 可以满足您的要求,它可以在字典中查找词干。算法词干分析器在不了解词根的情况下提取词干,它们只是通过算法来完成。 看看 Hunspell 词干分析器,认为它可以完成这项工作: https://www.elastic.co/guide/en/elasticsearch/guide/current/hunspell.html