Это код NEST для вышеперечисленного:
е создать автоматическую функциональность веб-сайта электронной коммерции с помощью Completion Suggester.
Это мой индекс:
PUT myIndex
{
"mappings": {
"_doc" : {
"properties" : {
"suggest" : {
"type" : "completion"
},
"title" : {
"type": "keyword"
},
"category" : {
"type": "keyword"
},
"description" : {
"type": "keyword"
}
}
}
}
}
Теперь, когда вы загружаете рекламу, я хочу, чтобы поле заголовка использовалось для автозаполнения, так вот, как я загружаю документ:
POST dummy/_doc
{
"title": "Blue asics running shoes",
"category": "sports",
"description": "Nice blue running shoes, size 44 eu",
"suggest": {
"input": "Blue Asics running shoes" // <-- use title
}
}
Проблема в том, что упругий поиск соответствует только строке с начала ... то есть "Blu" найдет результат, но "Asic", "Run" или "Sho" ничего не вернут ...
Так что мне нужно сделать, чтобы токенизировать мой вклад, как это:
POST dummy/_doc
{
"title": "Blue asics running shoes",
"category": "sports",
"description": "Nice blue running shoes, size 44 eu",
"suggest": {
"input": ["Blue", "Asics", "running", "shoes"] // <-- tokenized title
}
}
Это будет хорошо работать ... Но как я должен токенизировать свое поле? Я знаю, что могу разбить строку в c #, но есть ли способ сделать это в Elasticsearch / Nest?