indexing - How to setup a field mapping for ElasticSearch that allows both exact and full text searching? -


यहाँ मेरी समस्या है:

मेरे पास product_id नामक क्षेत्र है मैं मानक पाठ विश्लेषक का इस्तेमाल करता हूं तो यह इसे टोकन में बांटता है:

  A + B-12321412  

("टोकन": "a", "start_offset": 1, यानी "ए + बी -1232412" {"टोकन": " "", "टाइप करें": 2, "प्रकार": "& lt; अल्फ़न्यूम", "स्थिति": 1}, {"टोकन": "b", "start_offset": 3, "end_offset": 4, "प्रकार": " & Lt; ALPHANUM & gt; "," position ": 2}, {" टोकन ":" 1232412 "," start_offset ": 5," end_offset ": 12," प्रकार ":" & lt; NUM & gt; "," स्थिति ": 3 }]}

आदर्श रूप से, मैं कभी-कभी एक सटीक उत्पाद आईडी खोजना चाहूंगा और दूसरी बार किसी उप स्ट्रिंग का उपयोग करना चाहूंगा या बस उत्पाद आईडी के एक भाग के लिए एक क्वेरी करूँगा।

मैपिंग की मेरी समझ एक एन डी विश्लेषक यह है कि मैं प्रति फ़ील्ड केवल एक विश्लेषक निर्दिष्ट कर सकता हूं।

क्या कोई विश्लेषण करने और सटीक मिलान दोनों के रूप में फ़ील्ड को स्टोर करने का कोई तरीका है?

हाँ, आप फ़ील्ड पैरामीटर का उपयोग कर सकते हैं आपके मामले में: "" "" "" "" "" "स्ट्रिंग", "फ़ील्ड": {"raw": {"type": "string", "index": " Not_analyzed "}}}

यह आपको दो अलग-अलग परिभाषाओं का उपयोग करके दो बार एक ही डेटा को इंडेक्स करने की अनुमति देता है। इस मामले में यह डिफ़ॉल्ट विश्लेषक और not_analyzed दोनों के माध्यम से अनुक्रमित किया जाएगा जो केवल सटीक मैचों को उठाएगा यह रिटर्न परिणाम छँटाई के लिए भी उपयोगी है:

हालांकि, आपको कुछ समय बिताने की ज़रूरत होगी कि आप कैसे खोज करना चाहते हैं। विशेष रूप से, अल्फा, संख्यात्मक और विराम चिह्न या विशेष वर्णों के मिश्रित भाग संख्याओं को आपको अपने प्रश्नों और मिलानों को रचनात्मक बनाने की आवश्यकता हो सकती है।


Comments

Popular posts from this blog

php - Select box validation (in laravel) -

Docker - Tomcat and PostgreSQL containers in same host - No Route to host -

java - Joda Time Interval Not returning what I expect -