Elasticsearch AutoComplete - Дополнение предложения от Dot & Whitespace для соответствия ввода -- None поле с участием autocomplete поле с участием lucene поле с участием autosuggest поле с участием search-suggestion пол Связанный проблема

Elasticsearch Autocomplete - Completion suggestion from dot & whitespace for matching input


0
vote

проблема

русский

Я пытаюсь создать автоматическое полное предложение на основе заголовка <код> (string as "Hunter Game", "Hunter", "HunterGame", "Hunter-Game") и имя пакета <код> (string as "az.com.hsz.hunter.game", "az.com.hsz.hunter-game", "az.com.hsz.hunter_game", "az.com.hsz.hunterGame") .

Сопоставление следующее:

 <код> {   "app-search-test": {     "mappings": {       "package": {         "properties":           {"title": {             "type": "string",             "analyzer": "autocomplete"           },           "package_name": {             "type": "string"           },           "title-suggest": {             "type": "completion",             "analyzer": "simple",             "payloads": true,             "preserve_separators": false,             "preserve_position_increments": true,             "max_input_length": 50           }         }       }     }   } }   

Документ с строкой предложений:

 <код> {     "title": "HUnter Game",     "package_name": "az.com.hsz.hunter.game",     "title-suggest": {                 "output": "Hunter Game",                 "input": "[az.com.hsz.hunter.game, Hunter Game]",                 "payload": {                   "package_name": "az.com.hsz.hunter.game",                   "icon": "<some-url>",                   "developer": "Vish",                   "id": "az.com.hsz.hunter.game",                   "title": "Hunter Game"                 }               } }   

Настройка индекса:

 <код> "analysis": {           "filter": {             "words_splitter": {               "type": "word_delimiter",               "preserve_original": "true",               "catenate_all": "true"             },             "ngram": {               "type": "ngram",               "min_gram": "2",               "max_gram": "15"             }           },           "analyzer": {             "autocomplete": {               "type": "custom",               "filter": [                 "standard",                 "lowercase",                 "stop",                 "kstem",                 "ngram",                 "words_splitter"               ],               "tokenizer": "keyword"             }           }         }   

Я ожидаю получить предложение Hunter Hunter, для запроса <код> az.com.hsz.hunter.game или <код> Hunter Game , который либо по названию или имени пакета. Но для документа с входом <код> "input": "[az.com.hsz.hunter.game, Hunter Game]" , как ожидаемое suggetion для первого входного значения <код> Statement select(session); // we need a Statement for later RecordSet creation select << "SELECT * FROM Person", now; // create a RecordSet RecordSet rs(select); std::size_t cols = rs.columnCount(); // print all column names for (std::size_t col = 0; col < cols; ++col) std::cout << rs.columnName(col) << std::endl; // iterate over all rows and columns for (RecordSet::Iterator it = rs.begin(); it != rs.end(); ++it) std::cout << *it << " "; 0 не со с помощью второго <код> Statement select(session); // we need a Statement for later RecordSet creation select << "SELECT * FROM Person", now; // create a RecordSet RecordSet rs(select); std::size_t cols = rs.columnCount(); // print all column names for (std::size_t col = 0; col < cols; ++col) std::cout << rs.columnName(col) << std::endl; // iterate over all rows and columns for (RecordSet::Iterator it = rs.begin(); it != rs.end(); ++it) std::cout << *it << " "; 1 . Если вход был обращен в обратную связь <код> Statement select(session); // we need a Statement for later RecordSet creation select << "SELECT * FROM Person", now; // create a RecordSet RecordSet rs(select); std::size_t cols = rs.columnCount(); // print all column names for (std::size_t col = 0; col < cols; ++col) std::cout << rs.columnName(col) << std::endl; // iterate over all rows and columns for (RecordSet::Iterator it = rs.begin(); it != rs.end(); ++it) std::cout << *it << " "; 2 Предложение, работающее для <код> Statement select(session); // we need a Statement for later RecordSet creation select << "SELECT * FROM Person", now; // create a RecordSet RecordSet rs(select); std::size_t cols = rs.columnCount(); // print all column names for (std::size_t col = 0; col < cols; ++col) std::cout << rs.columnName(col) << std::endl; // iterate over all rows and columns for (RecordSet::Iterator it = rs.begin(); it != rs.end(); ++it) std::cout << *it << " "; 3 , но не с Statement select(session); // we need a Statement for later RecordSet creation select << "SELECT * FROM Person", now; // create a RecordSet RecordSet rs(select); std::size_t cols = rs.columnCount(); // print all column names for (std::size_t col = 0; col < cols; ++col) std::cout << rs.columnName(col) << std::endl; // iterate over all rows and columns for (RecordSet::Iterator it = rs.begin(); it != rs.end(); ++it) std::cout << *it << " "; 4 .

Как сделать это работать?

Английский оригинал

I am trying to create auto-complete suggest based on title (string as "Hunter Game", "Hunter", "HunterGame", "Hunter-Game") and package name (string as "az.com.hsz.hunter.game", "az.com.hsz.hunter-game", "az.com.hsz.hunter_game", "az.com.hsz.hunterGame").

Mapping is as follow:

{   "app-search-test": {     "mappings": {       "package": {         "properties":           {"title": {             "type": "string",             "analyzer": "autocomplete"           },           "package_name": {             "type": "string"           },           "title-suggest": {             "type": "completion",             "analyzer": "simple",             "payloads": true,             "preserve_separators": false,             "preserve_position_increments": true,             "max_input_length": 50           }         }       }     }   } } 

Document with Suggestion String is:

{     "title": "HUnter Game",     "package_name": "az.com.hsz.hunter.game",     "title-suggest": {                 "output": "Hunter Game",                 "input": "[az.com.hsz.hunter.game, Hunter Game]",                 "payload": {                   "package_name": "az.com.hsz.hunter.game",                   "icon": "<some-url>",                   "developer": "Vish",                   "id": "az.com.hsz.hunter.game",                   "title": "Hunter Game"                 }               } } 

Index Setting:

"analysis": {           "filter": {             "words_splitter": {               "type": "word_delimiter",               "preserve_original": "true",               "catenate_all": "true"             },             "ngram": {               "type": "ngram",               "min_gram": "2",               "max_gram": "15"             }           },           "analyzer": {             "autocomplete": {               "type": "custom",               "filter": [                 "standard",                 "lowercase",                 "stop",                 "kstem",                 "ngram",                 "words_splitter"               ],               "tokenizer": "keyword"             }           }         } 

I am expecting to get suggestion Hunter Game, for query az.com.hsz.hunter.game or Hunter Game, which is either by title or package name. But for document with input "input": "[az.com.hsz.hunter.game, Hunter Game]" , getting expected suggetion for first input value az.com.hsz.hunter.game not with second Hunter Game. If input is reversed "input": "[Hunter Game, az.com.hsz.hunter.game]" suggestion working for Hunter Game, but not with az.com.hsz.hunter.game.

How make it work?

</div
              

Список ответов

0
 
vote

Я думаю, что случайно вы делаете входные целую строку, а не список строк.

 <код> "input": ["az.com.hsz.hunter.game", "Hunter Game"]   

будет работать.

В настоящее время <код> "[az.com.hsz.hunter.game, Hunter Game]" считается одной строкой и, следовательно, вы вернетесь в результате в соответствии с тем, что является первым символом.

 

I think by accidently you are making input a whole string rather than list of strings.

"input": ["az.com.hsz.hunter.game", "Hunter Game"] 

will work.

currently "[az.com.hsz.hunter.game, Hunter Game]" is considered one string and hence you get back the result according to whatever is the first character.

</div
 
 

Связанный проблема

1  Elasticsearch. Не удалось установить новое соединение: [WinError 10061]  ( Elasticsearch failed to establish a new connection winerror 10061 ) 
После записи этого кода я получаю ошибку соединения. <код> from elasticsearch import Elasticsearch es = Elasticsearch() doc = {'author': 'kimchy','text': 'E...

3  Google Play Game Services Выйди вызова обратного вызова  ( Google play game services sign out callback ) 
Я пытаюсь реализовать игровые сервисы Google Play в мою заявку. Мне удалось получить пользователь входа в систему входа в систему на запуске, а показать лидер...

13  Elasticsearch - набор max_clause_count  ( Elasticsearch set max clause count ) 
<в сторону CLASS = "S-NEWACTS S-WELTIMENT__info JS-Post-New Imide MB16 JS-Bounty-Notification« Роль = «Статус»> the Bounty истекает в 6 дней . ...

1  АвтоQuery не может запрашивать вложенный объект  ( Autoquery cant query nested object ) 
АвтоQuery не смог найти поле У меня есть следующие заливки: <код> [Route("/query/domains")] public class QueryDomains : QueryDb<Domain, DomainList> { ...

0  Секреты хранения в приложении Django работают с Docker на цифровой камере  ( Store secrets in a django application running with docker on a digitalocean ) 
Мне любопытно, что лучший способ безопасно хранить секреты (пароли, секретные клавиши и т. Д.) В приложении Django на сервере. Ранее я использовал Heroku с G...

0  Термин фильтр для логических типов не возвращает никаких результатов  ( Term filter for boolean types does not return any results ) 
У меня есть некоторые данные со следующим индексом (это просто соответствующая часть): <код> { "content": { "mappings" : { "content": { ...

1  Питание новых Relic не улучшает холодный старт  ( New relics pings not improving cold start ) 
Есть похожий вопрос о гавани приложений на Stackoverflow, но пользователь не пытался использовать новую реликвию, чтобы преодолеть проблему. Я развернул м...

3  Google Play Game Services Выйди вызова обратного вызова  ( Google play game services sign out callback ) 
Я пытаюсь реализовать игровые сервисы Google Play в мою заявку. Мне удалось получить пользователь входа в систему входа в систему на запуске, а показать лидер...

1  Могу ли я использовать цифровые пространства для океана для загруженных пользователей файлов django?  ( Can i use digital ocean spaces for user uploaded files with django ) 
Я хотел бы иметь центральное место для изображений, JavaScript, CSS и т. Д. Для включения горизонтального масштабирования в моем приложении Django. На данны...

0  Сервисный стек набор httpcookie.secure flag / атрибут?  ( Service stack set httpcookie secure flag attribute ) 
Я пытаюсь установить безопасный флаг на сеанс cookie (т.е. https: // www. owasp.org/index.php/secureflag ). Я пытался: <код> public override void Configu...

1  Как реализовать поле поиска автозаполнения (VIEPOR) с существующим индексом Elasticsearch?  ( How to implement an autocomplete search field suggestor with an existing elast ) 
Индекс ES состоит из 2 типов, которые неявно отображаются (отображение по умолчанию). Один тип - это «человек» или автор, 2-й тип «документ». У индекса есть о...

0  Digitalocean не обновляет должным образом  ( Digitalocean not updating properly ) 
У меня есть проект реагирования, который я загрузил в цифровой океан. У меня есть проблема, где я внес некоторые изменения в проект. Требуется ли Git Pull (см...

0  Ошибка без подходящих устройств для установки приложения, как я могу это решить?  ( Error no eligible devices for app install how can i solve this ) 
Я пишу приложение для Android, я устанавливаю свое приложение к My Samsung Tablet 3, используя Eclipse, он работает нормально, Но когда я поставил свое прилож...

1  АвтоQuery не может запрашивать вложенный объект  ( Autoquery cant query nested object ) 
АвтоQuery не смог найти поле У меня есть следующие заливки: <код> [Route("/query/domains")] public class QueryDomains : QueryDb<Domain, DomainList> { ...

3  Google Play Game Services Выйди вызова обратного вызова  ( Google play game services sign out callback ) 
Я пытаюсь реализовать игровые сервисы Google Play в мою заявку. Мне удалось получить пользователь входа в систему входа в систему на запуске, а показать лидер...

Связанный проблема

1  Elasticsearch. Не удалось установить новое соединение: [WinError 10061] 
3  Google Play Game Services Выйди вызова обратного вызова 
13  Elasticsearch - набор max_clause_count 
1  АвтоQuery не может запрашивать вложенный объект 
0  Секреты хранения в приложении Django работают с Docker на цифровой камере 
0  Термин фильтр для логических типов не возвращает никаких результатов 
1  Питание новых Relic не улучшает холодный старт 
3  Google Play Game Services Выйди вызова обратного вызова 
1  Могу ли я использовать цифровые пространства для океана для загруженных пользователей файлов django? 
0  Сервисный стек набор httpcookie.secure flag / атрибут? 
1  Как реализовать поле поиска автозаполнения (VIEPOR) с существующим индексом Elasticsearch? 
0  Digitalocean не обновляет должным образом 
0  Ошибка без подходящих устройств для установки приложения, как я могу это решить? 
1  АвтоQuery не может запрашивать вложенный объект 
3  Google Play Game Services Выйди вызова обратного вызова