我想按以下顺序搜索文字并相应地给出相应的分数:
- 匹配完整的词组
- 所有字词(确切字词)都应出现在搜索结果中
- 结果中应出现一些或至少一个单词
醇>
这是我的问题:
{
"_source": [
"title"
],
"query": {
"bool": {
"should": [
{
"match": {
"title": {
"query": "introduction to java",
"fuzziness": 0,
"operator": "and",
"boost": 1
}
}
},
{
"match_phrase": {
"title": {
"query": "introduction to java",
"boost": 5
}
}
}
],
"minimum_should_match": 1
}
},
"size": 20
}
但我先得到Javascript或jQuery而不是java。 结果:
{
"_score": 594.7316,
"_source": {
"title": "Introduction to jQuery Web Development"
}
}
,
{
"_score": 592.86993,
"_source": {
"title": "Introduction to JavaScript Development"
}
}
,
{
"_score": 592.8397,
"_source": {
"title": "A Comprehensive Introduction to Java Virtual Machine (JVM)"
}
}
,
{
"_score": 591.7474,
"_source": {
"title": "Introduction to Java for Programmers"
}
}
我该怎么做才能实现这一目标?提前谢谢。
答案 0 :(得分:0)
好的,这是我的错误。 我使用映射api在title字段上应用了edge_ngram分析器,这就是它搜索j / ja / jav / java的原因。
我删除了索引并创建了一个没有这个映射的新索引,它对我来说很好。