【发布时间】:2016-05-13 20:04:22
【问题描述】:
我做了一个非常简单的测试。我建立一个学生索引和一个类型,然后定义一个映射:
POST student
{
"mappings" : {
"ing3" : {
"properties" : {
"quote": {
"type": "string",
"analyzer": "english"
}
}
}
}
}
之后我将 3 名学生添加到该索引中:
POST /student/ing3/1
{
"name": "Smith",
"first_name" : "John",
"quote" : "Learning is so cool!!"
}
POST /student/ing3/2
{
"name": "Roosevelt",
"first_name" : "Franklin",
"quote" : "I learn everyday"
}
POST /student/ing3/3
{
"name": "Black",
"first_name" : "Mike",
"quote" : "I learned a lot at school"
}
此时我认为英语标记器会标记我引号中的所有单词,所以如果我进行如下搜索:
GET /etudiant/ing3/_search
{
"query" : {
"term" : { "quote" : "learn" }
}
}
结果我将拥有所有文档,因为我的标记器将做出平等的“学习、学习、学习”,我是对的。但是当我尝试这个请求时:
GET /student/ing3/_search
{
"query" : {
"term" : { "quote" : "learned" }
}
}
我的命中率为零,我认为我应该拥有第三份文件(至少?)。但对我来说,Elasticsearch 也应该索引 learned 和 learning 而不仅仅是 learn。我错了吗?我的要求有错吗?
【问题讨论】:
标签: elasticsearch indexing lucene