弹性搜索搜索不区分大小写的连字符 whitecaps
elastic search searching case insensitive hyphens whitecaps
我想搜索一个或多个由连字符、白帽组成且不区分大小写的词。
索引结构如下:
body' => array(
'settings' => array(
"analysis" => array(
"analyzer" => array(
"default" => array(
"type" => "custom",
'tokenizer' => "whitespace",
"filter" => array("lowercase")
),
"autoCompleteSearch" => array(
"tokenizer" => "standard",
"filter" => array("lowercase", "trim", "standard")
)
)
)
),
'mappings' => array(
"myindex" => array(
'properties' => array(
'Id' => array(
'type' => 'integer',
'index' => 'not_analyzed'
),
'Title' => array(
'type' => 'string',
'fields'=> array(
raw' => array(
'type' => 'string',
"search_analyzer" => "autoCompleteSearch",
'index' => 'not_analyzed'
)
)
),
'Content' => array(
'type' => 'string',
'fields'=> array(
raw' => array(
'type' => 'string',
"search_analyzer" => "autoCompleteSearch",
'index' => 'not_analyzed'
)
)
)
)
)
)
这里是查询:
"query" : {
"query_string": {
"query": "*t-shir red*",
"lowercase_expanded_terms": false,
"fields": [
"Title.raw",
"Content.raw"
]
}
}
我想在 ex 的搜索字段中找到 T 恤 RED。 "t-shirt red".
非常感谢您!
与自定义原始小写子字段类似:
{
"settings": {
"analysis": {
"analyzer": {
"my_keyword_lowercase_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"myindex": {
"_source": {
"enabled": true
},
"properties": {
"Title": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
},
"raw_lowercase": {
"type": "string",
"analyzer": "my_keyword_lowercase_analyzer"
}
}
},
"Content": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
},
"raw_lowercase": {
"type": "string",
"analyzer": "my_keyword_lowercase_analyzer"
}
}
},
"Image": {
"type": "string",
"analyzer": "standard"
}
}
}
}
}
以及查询:
{
"query": {
"query_string": {
"query": "*t-shirt\ red*",
"lowercase_expanded_terms": false,
"fields": [
"Title.raw_lowercase",
"Content.raw_lowercase"
]
}
}
}
我想搜索一个或多个由连字符、白帽组成且不区分大小写的词。
索引结构如下:
body' => array(
'settings' => array(
"analysis" => array(
"analyzer" => array(
"default" => array(
"type" => "custom",
'tokenizer' => "whitespace",
"filter" => array("lowercase")
),
"autoCompleteSearch" => array(
"tokenizer" => "standard",
"filter" => array("lowercase", "trim", "standard")
)
)
)
),
'mappings' => array(
"myindex" => array(
'properties' => array(
'Id' => array(
'type' => 'integer',
'index' => 'not_analyzed'
),
'Title' => array(
'type' => 'string',
'fields'=> array(
raw' => array(
'type' => 'string',
"search_analyzer" => "autoCompleteSearch",
'index' => 'not_analyzed'
)
)
),
'Content' => array(
'type' => 'string',
'fields'=> array(
raw' => array(
'type' => 'string',
"search_analyzer" => "autoCompleteSearch",
'index' => 'not_analyzed'
)
)
)
)
)
)
这里是查询:
"query" : {
"query_string": {
"query": "*t-shir red*",
"lowercase_expanded_terms": false,
"fields": [
"Title.raw",
"Content.raw"
]
}
}
我想在 ex 的搜索字段中找到 T 恤 RED。 "t-shirt red".
非常感谢您!
与自定义原始小写子字段类似:
{
"settings": {
"analysis": {
"analyzer": {
"my_keyword_lowercase_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"myindex": {
"_source": {
"enabled": true
},
"properties": {
"Title": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
},
"raw_lowercase": {
"type": "string",
"analyzer": "my_keyword_lowercase_analyzer"
}
}
},
"Content": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
},
"raw_lowercase": {
"type": "string",
"analyzer": "my_keyword_lowercase_analyzer"
}
}
},
"Image": {
"type": "string",
"analyzer": "standard"
}
}
}
}
}
以及查询:
{
"query": {
"query_string": {
"query": "*t-shirt\ red*",
"lowercase_expanded_terms": false,
"fields": [
"Title.raw_lowercase",
"Content.raw_lowercase"
]
}
}
}