作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 token 过滤器和分析器,如下所示。但是,我无法保留原始 token 。例如,如果我使用 _analyze
这个词:saint-louis
,我只返回 saintlouis
,而我希望得到两个 saintlouis 和 saint-louis
,因为我将 preserve_original 设置为 true
。 我使用的ES版本是6.3.2,Lucene版本是7.3.1
"analysis": {
"filter": {
"hyphenFilter": {
"pattern": "-",
"type": "pattern_replace",
"preserve_original": "true",
"replacement": ""
}
},
"analyzer": {
"whitespace_lowercase": {
"filter": [
"lowercase",
"asciifolding",
"hyphenFilter"
],
"type": "custom",
"tokenizer": "whitespace"
}
}
}
最佳答案
看起来 preserve_original
在 pattern_replace
token 过滤器上不受支持,至少在我使用的版本上不支持。
我做了如下的解决方法:
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "whitespace",
"type": "custom",
"filter": [
"lowercase",
"hyphen_filter"
]
}
},
"filter": {
"hyphen_filter": {
"type": "word_delimiter",
"preserve_original": "true",
"catenate_words": "true"
}
}
}
}
}
例如,这会将像 anti-spam
这样的词标记为 antispam(删除连字符)
,anti-spam(保留原始)
、反
和垃圾邮件。
POST/_分析
{ "text": "反垃圾邮件", “分析器”:“my_analyzer”
{
"tokens": [
{
"token": "anti-spam",
"start_offset": 0,
"end_offset": 9,
"type": "word",
"position": 0
},
{
"token": "anti",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 0
},
{
"token": "antispam",
"start_offset": 0,
"end_offset": 9,
"type": "word",
"position": 0
},
{
"token": "spam",
"start_offset": 5,
"end_offset": 9,
"type": "word",
"position": 1
}
]
}
关于elasticsearch - preserve_original elasticsearch 中的原始标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60441801/
我有一个 token 过滤器和分析器,如下所示。但是,我无法保留原始 token 。例如,如果我使用 _analyze 这个词:saint-louis,我只返回 saintlouis,而我希望得到两个
我是一名优秀的程序员,十分优秀!