Я пытаюсь использовать функциональность Elasticsearch ' Suggester '.
Используя фразу, термин или завершение, я всегда получаю следующую ошибку:
unable to parse SuggestionBuilder with name [COMPLETION]: parser not found"
unable to parse SuggestionBuilder with name [TERM]: parser not found"
unable to parse SuggestionBuilder with name [PHRASE]: parser not found"
Я пробовал несколько версий 6.x NEST, и все они имеют одну и ту же проблему.
Обновление до 7.0alpha1 действительно меняет ошибку, но, похоже, вызывает множество других проблем, и я скорее не использую альфа-библиотеку в работе.
В настоящее время я следую этому уроку и встраиваю его в свой существующий код: https://github.com/elastic/elasticsearch-net-example/tree/6.x-codecomplete-netcore#part-6-suggestions
В настоящее время используется NEST 6.1
Модель:
public class SearchResult {
public SearchResult()
{
TitleSuggest = new CompletionField {Input = new List<string>(Title.Split(' '))};
}
public CompletionField TitleSuggest { get; set; }
//etc
}
Индексный метод:
public async Task<IActionResult> CreateIndex()
{
await _searchClient.CreateIndexAsync(SearchIndexName, indexSelector =>
indexSelector
.Mappings(mappingsDescriptor =>
mappingsDescriptor.Map<Models.SearchResult>(y => y.AutoMap().Properties(pr=>pr.Completion(c => c.Name(p => p.TitleSuggest)
))))
Предложить метод:
public async Task<ISearchResponse<SearchResult>> Suggest(string keyword)
{
return await _searchClient.SearchAsync<SearchResult>(
s =>
s.Suggest(ss => ss
.Completion("title", cs => cs
.Field(f => f.TitleSuggest)
.Prefix(keyword)
.Fuzzy(f => f
.Fuzziness(Fuzziness.Auto)
)
.Size(5))
}
Мне трудно расшифровать ошибку.
Кажется, что в библиотеках NEST отсутствуют парсеры с предложениями?
Любая помощь будет отличной, спасибо!