2016-06-24 2 views
3

Я использую эластичный поиск (NEST) в приложении API. Создать индексирование для поиска по имени. Его работа прекрасна.Как сделать автосогласование в C# с использованием elasticsearch (NEST)

var client = new ElasticClient(settings); 
var item = new NameIndex { ContentId = data.ContentId, 
name = data.Name }; 
client.Index(item); 

Теперь я хочу создать новый API для автоматического предложения для вышеуказанного индекса. Назначение этого API для пользователя, когда он начинает вводить имя, а первая буква - B - загружает весь список станций, начинающихся с B, затем следующая буква «B» сокращает список вниз до станций, начинающихся с BB и т. Д.

Как я мог это сделать?

+1

Посмотрите на завершение Suggester - https: // WWW .lastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html –

ответ

0

Ниже поисковый запрос может извлечь данные из эластичного индекса в соответствии с значением пользователя типизации (queryValue), Это работает для автоматического предложения

var data = client.Search<NameIndex >(i => i.Query(m => m 
.MatchPhrasePrefix(c => c.OnField(p => p.name) 
.Query(queryValue))) 
).Documents.ToList(); 
+0

Даже я сделал что-то подобное и из результирующих документов, я добавил в список повторно заполненные поля и затем использовал этот список в качестве входных данных для либо AutoCompleteExtender, либо автозаполнение jquery, чтобы отображать предложения под текстовым полем. Есть ли другой способ, чем это? – ASN

+0

В этом случае API возвращает список данных предложений, я думаю, что к этому может быть обращен вызов AJAX (API) и привязан к UI –

+0

Спасибо Sanjeev. Да, даже в моем случае он просто генерирует результаты, основанные на нашем стиле отображения. Я просматриваю документы results.documents и добавляю их в список, а затем привязываю их к пользовательскому интерфейсу. – ASN

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