Aktualizacja pokazać próbkę pracującychOkreślanie i za pomocą NGramTokenizer z C# dla klienta NEST Elastic Search
Próbuję zrobić częściową wyszukiwanie w kolekcji nazwy użytkowników w ElasticSearch.
Poszukiwania wskazały mi kierunek nGram Tokenizer
, ale jestem zaskoczony we właściwej realizacji i nie uzyskać żadnych wyników.
Jest to odpowiedni kod usunięte z projektu nad którym pracuję.
Próbowałem różnych kombinacji i typów wyszukiwania bez skutku.
setup.cs
var client = new ElasticClient(settings.ConnectionSettings);
// (Try and) Setup the nGram tokenizer.
var indexSettings = new IndexSettings();
var custonAnalyzer = new CustomAnalyzer();
customAnalyzer.Tokenizer = "mynGram";
customAnalyzer.Filter = new List<string> { "lowercase" };
indexSettings.Analysis.Analyzers.Add("mynGram", customAnalyzer);
indexSettings.Analysis.Tokenizers.Add("mynGram", new NGramTokenizer
{
MaxGram = 10,
MinGram = 2
});
client.CreateIndex(settings.ConnectionSettings.DefaultIndex, indexSettings);
client.MapFromAttributes<Profile>();
// Create and add a new profile object.
var profile = new Profile
{
Id = "1",
Username = "Russell"
};
client.IndexAsync(profile);
// Do search for object
var s = new SearchDescriptor<Profile>().Query(t => t.Term(c => c.Username, "russ"));
var results = client.Search<Profile>(s);
Profile.cs
public class Profile
{
public string Id { get; set; }
[ElasticProperty(IndexAnalyzer = "mynGram")]
public string Username { get; set; }
}
Wszelkie wskazówki będą mile widziane.
I jak za pomocą magii działa. Zaktualizuję próbkę, aby pokazać wersję stałą, by móc ją później wykorzystać. Dzięki za wskazówki. – RLewis
Łącze nie działa. –