Elasticsearch:无法使用字形搜索
Elasticsearch: Unable to search with wordforms
我正在尝试设置 Elasticsearch、创建索引、添加一些记录,但无法使它成为 return 词形式的结果(例如:当我搜索 [= 时带有子字符串 "dreams" 的记录26=]).
我的记录是这样的(索引 "myindex/movies"):
{
"id": 1,
"title": "What Dreams May Come",
... other fields
}
我尝试使用的配置:
{
"settings": {
"analysis": {
"analyzer": {
"stem": {
"tokenizer": "standard",
"filter": [
"standard",
"lowercase",
"stop",
"porter_stem"
]
}
}
}
},
"mappings": {
"movies": {
"dynamic": true,
"properties": {
"title": {
"type": "string",
"analyzer": "stem"
}
}
}
}
}
查询如下所示:
{
"query": {
"query_string": {
"query": "Dream"
}
}
}
我可以使用单词 "dreams" 返回结果,但不能使用 "dream"。
我做错了什么吗?
我应该先安装 porter_stem 吗?
你没有做错任何事,只是你搜索的领域不对。
query_string ,默认在 _all 上搜索。 _all 有自己的分析器。
因此,您需要将相同的分析器应用于 _all 或将查询指向标题字段,如下所示 -
{
"query": {
"query_string": {
"query": "dream",
"default_field": "title"
}
}
}
我正在尝试设置 Elasticsearch、创建索引、添加一些记录,但无法使它成为 return 词形式的结果(例如:当我搜索 [= 时带有子字符串 "dreams" 的记录26=]).
我的记录是这样的(索引 "myindex/movies"):
{
"id": 1,
"title": "What Dreams May Come",
... other fields
}
我尝试使用的配置:
{
"settings": {
"analysis": {
"analyzer": {
"stem": {
"tokenizer": "standard",
"filter": [
"standard",
"lowercase",
"stop",
"porter_stem"
]
}
}
}
},
"mappings": {
"movies": {
"dynamic": true,
"properties": {
"title": {
"type": "string",
"analyzer": "stem"
}
}
}
}
}
查询如下所示:
{
"query": {
"query_string": {
"query": "Dream"
}
}
}
我可以使用单词 "dreams" 返回结果,但不能使用 "dream"。
我做错了什么吗? 我应该先安装 porter_stem 吗?
你没有做错任何事,只是你搜索的领域不对。 query_string ,默认在 _all 上搜索。 _all 有自己的分析器。 因此,您需要将相同的分析器应用于 _all 或将查询指向标题字段,如下所示 -
{
"query": {
"query_string": {
"query": "dream",
"default_field": "title"
}
}
}