2014-07-09 5 views
5
में ngrams साथ वाइल्डकार्ड का उपयोग करने के लिए

क्या यह संभव है ElasticSearch में वाइल्डकार्ड मैच और ngrams गठबंधन करने के लिए? मैं पहले से ही लंबाई 3-11 के ngrams का उपयोग कर रहा हूँ।कैसे ElasticSearch

एक बहुत छोटे से उदाहरण के रूप में, मैं रिकॉर्ड C1239123 और C123है। उपयोगकर्ता इन दोनों को वापस करना चाहता है। C123 12

उपरोक्त मामले में मेरा पूरा मैच विश्लेषक पर काम नहीं करेगा क्योंकि क्वेरी अंत पर 3 याद आ रही है: यह केवल जानकारी वे जानते हैं कि है। मैं इंप्रेशन के तहत था वाइल्डकार्ड मैच बॉक्स से बाहर काम करेगा, लेकिन अगर मैं ऊपर की तरह एक खोज करता हूं तो मुझे गंदगी मिलती है।

क्वेरी:

.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)))); 

विश्लेषक:

var projectPartialMatch = new CustomAnalyzer 
{ 
    Filter = new List<string> { "lowercase", "asciifolding" }, 
    Tokenizer = "ngramtokenizer" 
}; 

Tokenizer:

.Tokenizers(t=>t 
    .Add("ngramtokenizer", new NGramTokenizer 
    { 
     TokenChars = new[] {"letter","digit","punctuation"}, 
     MaxGram = 11, 
     MinGram = 3 
    })) 

संपादित करें: मुख्य उद्देश्य उपयोगकर्ता कहां खोज इंजन बताने के लिए अनुमति देने के लिए है अज्ञात अक्षर हैं। यह मैच ऑर्डर को सुरक्षित रखता है। मैं क्वेरी को नग्रम नहीं करता, केवल अनुक्रमित फ़ील्ड।

अधिक परीक्षण के परिणाम के साथ संपादित करें 2: मैं थोड़ा बहुत ज्यादा मेरे पहले उदाहरण सरलीकृत था। विच्छेदन फिल्टर के कारण gibberish जा रहा था। एक उचित उदाहरण के साथ कोई गड़बड़ नहीं है, लेकिन परिणाम प्रासंगिक क्रम में वापस नहीं आते हैं। नीचे देखकर, मुझे यकीन नहीं है कि पहले 2 परिणाम क्यों मेल खाते हैं। Ngram क्वेरी पर लागू नहीं है। ?

c.a123 के लिए सर्च कर रहे हैं .7 0 देता है इस क्रम में परिणाम:

  • C.A1234.560
  • C.A1234.800
  • C.A1234.700 < - यह पहले नहीं होना चाहिए?
  • C.A1234.950
+0

आप की कोशिश की 'C123? 12 *' किया? ElasticSearch में वाइल्डकार्ड मैचों और ngrams को गठबंधन करना ठीक है लेकिन आपको समझना होगा कि यह कैसे काम करता है। अन्यथा यह अप्रत्याशित परिणाम वापस आ गया है –

+0

@ Duc.Duong मैंने कोशिश की है। यह परिणाम लौटाता है, लेकिन वे क्वेरी के लिए कोई प्रासंगिकता नहीं दिखते हैं। – Brandon

+0

क्या आप मिलान किए गए परिणाम पोस्ट कर सकते हैं? हम –

उत्तर

1
इस के लिए एक प्रस्ताव की तलाश में किसी को भी करने के लिए

, वाइल्डकार्ड डिफ़ॉल्ट रूप से ngrammed टोकन पर किया जाता है। मेरी समस्या उनके प्रश्नों में विराम चिह्न होने और मेरी क्वेरी पर मानक विश्लेषक का उपयोग करने के कारण थी (जो विराम चिह्न पर टूट जाती है)।

जिज्ञासा प्लगइन का उपयोग करने के लिए Duc.Duong के सुझाव शो वास्तव में कैसे डेटा का विश्लेषण किया किया जाएगा मदद की।