ElasticSearch'te joker eşleşmeleri ve ngramları birleştirmek mümkün müdür? Zaten 3-11 uzunluktaki ngramları kullanıyorum.ElasticSearch'te ngramlarla joker karakterler nasıl kullanılır?
Çok küçük bir örnek olarak, C1239123 ve C123kayıtlarım var. Kullanıcı her ikisini de iade etmek istiyor. Bildikleri tek bilgi budur: C123? 12
Yukarıdaki örnek, tam 3 no'lu analizörümde çalışmaz, çünkü sorgu sonunda 3 eksik. Ben joker maçlar kutusunun dışında çalışacağım izlenim altındaydım, ama yukarıdaki gibi bir arama yaparsam anlamsızlaşırdım.
Sorgu:
.Search<ElasticSearchProject>(a => a
.Size(100)
.Query(q => q
.SimpleQueryString(query => query
.OnFieldsWithBoost(b => b
.Add(f => f.Summary, 2.1)
.Add(f => f.Summary.Suffix("ngram"), 2.0)
.Query(searchQuery))));
Analiz:
var projectPartialMatch = new CustomAnalyzer
{
Filter = new List<string> { "lowercase", "asciifolding" },
Tokenizer = "ngramtokenizer"
};
Simgeleştirici:
.Tokenizers(t=>t
.Add("ngramtokenizer", new NGramTokenizer
{
TokenChars = new[] {"letter","digit","punctuation"},
MaxGram = 11,
MinGram = 3
}))
DÜZENLEME: temel amacı kullanıcı tam olarak nerede arama motoru anlatmaya olanak sağlamaktır bilinmeyen karakterler. Bu maç sırasını korur. Sorguyu, yalnızca dizine eklenmiş alanları kullanmıyorum.
Daha fazla test sonucu ile EDIT 2: Önceki örneğimi biraz daha basitleştirdim. Anlamsız kelimeler noktalama filtrelerinden kaynaklanıyordu. Uygun bir örnekle anlamsızlık yoktur, ancak sonuçlar ilgili bir sırayla iade edilmez. Aşağıya baktığımda, ilk 2 sonuçların neden hiç eşleşmediğinden emin değilim. Ngram sorguya uygulanmaz. ?
c.a123 aranıyor 0,7 0 bu sırada sonuçlar verir: C.A1234.800
- C.A1234.560
- - Bu önce olmaz mıydı?
- C.A1234.950 Buna bir çözüm arayan biri için
Bunu denediniz mi c123? 12 * '? ElasticSearch'te joker eşleşmeleri ve ngramları birleştirmek güzel ama nasıl çalıştığını anlamanız gerekiyor. Aksi halde, beklenmedik sonuçlara geri dönüyor –
@ Duc.Duong Bunu denedim. Sonuç döndürüyor, ancak sorguyla ilgisi yok gibi görünüyor. – Brandon
Eşleşen sonuçları gönderir misiniz? Daha fazla araştırabiliriz –