2015-11-13 4 views
1

Я не могу сделать term suggester работы.Elasticsearch, срок рекомендательного совета возвращается

Вот мои настройки.

'name_not_analyzed': { 
    'type': 'string', 
    "index": "not_analyzed" 
}, 

'suggest': { 
    'type': 'completion', 
    'analyzer': "simple", 
    'search_analyzer': 'simple', 
    'payloads': 'yes' 
} 

И вот мои просьбы.

** Срок Suggester не работает ..

GET /reviewmeta_index/_suggest 
{ 

    "my" : { 
    "text" : "dd", 
     "term" : { 
     "field" : "name_not_analyzed" 
     } 
    } 
} 

** завершение Suggester работы ..

GET /reviewmeta_index/_suggest 
{ 
    "product_suggest":{ 
     "text":"dd", 
     "completion": { 
      "field" : "suggest" 
     } 
    } 
} 

Документация о том, как я должен установить для термина Suggester на работу редка. .

ответ

3

Completion Suggester для функции автозаполнения, так как запрос

{ 
    "name_suggest":{ 
     "text":"d", 
     "completion": { 
      "field" : "suggest" 
     } 
    } 
} 

даст вам что-то вроде

"options": [ 
       { 
        "text": "donald", 
        "score": 8 
       }, 
       { 
        "text": "david", 
        "score": 7 
       } 
] 

в то время как term suggester для проверки орфографии и находя аналогичные термины, так что вам нужно запросить как

{ 
    "my-suggestion": { 
    "text": "davi", 
    "term": { 
     "field": "name_not_analyzed", 
     "size" : 10 
    } 
    } 
} 

, который даст вам что-то вроде этого

"options": [ 
      { 
       "text": "dave", 
       "score": 0.8333333, 
       "freq": 11 
      }, 
      { 
       "text": "david", 
       "score": 0.6666666, 
       "freq": 6 
      } 
    ] 

Я использую термин summester для функции «Вы имели в виду», когда пользователь получает нулевые результаты. Подробнее options для уточнения терминов.

EDIT 1: Добавлена ​​опция min_word_length

с момента text имеет только 2 символов и потому, что значение max_edits по умолчанию 2 и значение min_word_length по умолчанию 4, вы не получаете никаких результатов.

Вам нужно добавить min_word_length вариант запроса

GET /reviewmeta_index/_suggest 
{ 

    "my" : { 
    "text" : "dd", 
     "term" : { 
     "field" : "name_not_analyzed", 
     "min_word_length" : 2 
     } 
    } 
} 

Этот запрос даст вам предложения, как «делать», «сделал» но не будут давать вам «DO», «ли» так как у вас есть index : not_analyzed на поле.

Примечание: Вы не можете увеличить max_edits до более чем 2, что по умолчанию.

algorithm Используется ES для расчета расстояния для редактирования.

+1

Да, но предложение предложения не возвращает ничего (пустые опции). Есть ли специальная настройка, которую мне нужно сделать, чтобы она работала? – eugene

+0

Не могли бы вы предоставить несколько примеров документов, которые, по вашему мнению, должны соответствовать вашему запросу termester query? – ChintanShah25

+0

@eugene Я отредактировал свой ответ. пожалуйста, дайте мне знать, если он не работает – ChintanShah25

Смежные вопросы