Хорошо, если у вас есть слова с таким рисунком, вы можете использовать split on letter-number transitions: "SD500" → "SD", "500"
с использованием фильтра токенизатора word_delimiter.
Вы можете разбить слово на переписку с использованием этого фильтра, чтобы иметь как буквенную, так и цифровую часть слова, сохраненные отдельно на инвертированном индексе. Тем не менее, это также сохранит копию точной стоимости по индексу.
Пожалуйста, обратитесь отображения и запросов ниже
PUT testindex_48
{
"settings": {
"analysis": {
"analyzer": {
"word_delimiter_analyzer": {
"tokenizer": "whitespace",
"filter": [
"lowercase",
"word_delimiter"
],
"ignore_case": true,
"preserve_original": true
}
},
"filter":{
"word_delimiter":{
"type":"word_delimiter",
"generate_word_parts":true,
"preserve_original": true
}
}
}
},
"mappings": {
"table1": {
"properties": {
"title": {
"type": "string",
"analyzer": "word_delimiter_analyzer"
}
}
}
}
}
POST testindex_48/table1
{
"title" : "EC450"
}
POST testindex_48/table1/_search
{
"query": {"bool": {"must": [
{"term": {
"title": {
"value": "450"
}
}}
]}}
}
POST testindex_48/table1/_search
{
"query": {"bool": {"must": [
{"term": {
"title": {
"value": "ec"
}
}}
]}}
}
POST testindex_48/table1/_search
{
"query": {"bool": {"must": [
{"term": {
"title": {
"value": "ec450"
}
}}
]}}
}
Теперь ваш USECASE, если пользователь вводит «EC 450», вы можете создать подобный запрос как следует за.
Не имеет никакого смысла, почему вы пытаетесь это сделать. – Adi
Не могли бы вы объяснить свой случай использования? –
, пожалуйста, покажите свой запрос и сопоставления, которые помогут вам сэкономить – user3775217