Как заставить работать синонимы в упругом поиске через C #? - PullRequest
0 голосов
/ 04 июня 2018

Последние несколько часов я пытался заставить работать синонимы в Elastic Search, но пока не получилось.Когда я выполняю поиск, синонимы никогда не индексируются.

Ниже приведена часть кода, где, как мне кажется, я могу ошибиться.Пожалуйста, посмотрите, и любая помощь будет высоко ценится.

var createIndexTask = Client.CreateIndexAsync(synonymsindexname, i => i
    .Settings(s => s
        .Analysis(a => a
            .TokenFilters(tf => tf
                .Synonym("my_synonym", sf => sf
                    .Format(SynonymFormat.Solr)
                    .SynonymsPath("synonyms/solrsynonyms.txt")
                )
            )
            .Analyzers(an => an
                .Custom("my_analyzer", ca => ca
                    .Tokenizer("standard")
                    .Filters("lowercase", "stop", "my_synonym")
                )
            )
        )
    )
    .Mappings(m => m
        .Map<ClinicalCode>(c => c
            .AutoMap()
            .Properties(p => p
                .Completion(comp => comp
                    .Contexts(ctx => ctx
                        .Category(csug => csug
                            .Name("ShortDescription")
                            .Path(x => x.ShortDescription)
                        )
                    )
                    .Name(n => n.Suggests)
                    .Analyzer("simple") 
                )
                .Text(t => t
                    .Name(n => n.LongDescription)
                    .Analyzer("my_analyzer") 
                    .CopyTo(ct => ct
                        .Field("allFields")
                    )
                )
                .Text(t => t
                    .Name(n => n.ShortDescription)
                    .Analyzer("my_analyzer") 
                    .CopyTo(ct => ct
                        .Field("allFields")
                    )
                )
                .Text(t => t
                    .Name(n => n.ICDCode)
                    .Analyzer("my_analyzer") 
                    .CopyTo(ct => ct
                        .Field("allFields")
                    )
                )
                .Keyword(k => k
                    .Name(n => n.ICDCode)
                )
            )
        )
    )
);
...