cập nhật để hiển thị một mẫu làm việcXác định và sử dụng một NGramTokenizer với C# NEST khách hàng cho đàn hồi Tìm kiếm
Tôi cố gắng để thực hiện tìm kiếm một phần trên một tập hợp các tên người dùng trong ElasticSearch.
Tìm kiếm xung quanh đã chỉ cho tôi theo hướng nGram Tokenizer
nhưng tôi bị bối rối khi triển khai đúng và không nhận được bất kỳ kết quả nào.
Đây là mã có liên quan bị tước khỏi dự án tôi đang làm việc.
Tôi đã thử các kết hợp và loại tìm kiếm khác nhau không có kết quả.
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; }
}
Bất cứ lời khuyên sẽ được nhiều đánh giá cao.
Và như thể ma thuật hoạt động. Tôi sẽ cập nhật mẫu để hiển thị phiên bản cố định để tham khảo trong tương lai. Cảm ơn bạn đã hướng dẫn. – RLewis
Liên kết không hoạt động. –