【发布时间】:2015-03-12 20:45:49
【问题描述】:
有没有办法分析传递给上下文建议器的字段? 如果,比如说,我的映射中有这个:
mappings: {
myitem: {
title: {type: 'string'},
content: {type: 'string'},
user: {type: 'string', index: 'not_analyzed'},
suggest_field: {
type: 'completion',
payloads: false,
context: {
user: {
type: 'category',
path: 'user'
},
}
}
}
}
我索引这个文档:
POST /myindex/myitem/1
{
title: "The Post Title",
content: ...,
user: 123,
suggest_field: {
input: "The Post Title",
context: {
user: 123
}
}
}
我想首先分析输入,将其拆分为单独的单词,通过小写和停用词过滤器运行它,以便上下文提示器真正得到 p>
suggest_field: {
input: ["post", "title"],
context: {
user: 123
}
}
我知道我可以将数组传递给建议字段,但我想避免在传递给 ES 之前将文本小写、拆分、在我的应用程序中运行停用词过滤器。如果可能的话,我宁愿 ES 为我做这件事。我确实尝试将 index_analyzer 添加到字段映射中,但这似乎没有任何效果。
或者,还有其他方法可以获取单词的自动完成建议吗?
【问题讨论】:
-
这是另一种方法,您可以使用 ngrams(然后您可以进行所有您想要的分析),尽管它涉及更多:blog.qbox.io/…
-
话虽如此,我认为也有一种方法可以通过完成建议来做你想做的事(我们也写了一篇关于此的博客文章:blog.qbox.io/…)。我会看看我是否能让你正在尝试的工作。
-
Sloan,那篇文章非常好,对我刚开始接触 ES 的时候帮助很大。但是,正如文章所说:“键入“disn”应返回包含“Disney”的结果”。我不想要“包含“迪士尼”的结果。我想要“迪士尼”,就是这样!我不在乎它属于哪个结果。
-
您是否尝试过使用术语聚合(或方面)?
-
嗯,不。根本不知道有这种事!让我检查一下并回复你。