2012-09-16 12 views
9

मैं क्वेरी स्ट्रिंग में एक fuzzy_prefix_length निर्दिष्ट कर रहा हूं, लेकिन "टेस" की खोज "टेस्ट" शीर्षक वाली पोस्ट नहीं खींच रही है ... कोई विचार क्या मैं गलत कर रहा हूं?query_string में लोचदार खोज फ़ज़ीनेस

यह मेरा क्वेरी स्ट्रिंग सेटअप है

"query" : { 
    "query_string" : { 
    "query" : the-query-string-goes-here, 
    "default_operator" : "AND", 
    "fuzzy_prefix_length" : 3, 
    } 
} 

उत्तर

13

आप कर रहे हैं, शायद, लापता "फजी" क्वेरी के अंत में ऑपरेटर। इसे आज़माएं:

"query" : { 
    "query_string" : { 
    "query" : "tes~", 
    "default_operator" : "AND", 
    "fuzzy_prefix_length" : 3, 
    } 
} 
+0

आह मैं देखता हूं ... अगर आपको कोई बुरा लगे तो प्रश्नों के दो जोड़े ... मैंने सुना है कि वाइल्डकार्ड प्रश्न औसत से धीमे हैं और स्केल नहीं करते हैं। इस ऑपरेटर के साथ कोई भी इसी तरह की चिंताओं? इसके अलावा, अभी "टेस" की खोज "टेस्ट" शीर्षक वाली एक पोस्ट खींच जाएगी लेकिन "est" की खोज नहीं होगी ... क्या ऐसा करने का कोई तरीका है ... या क्या मैं ओवररीच कर रहा हूं? – concept47

+1

"est" कोई परिणाम नहीं देता है क्योंकि आपने गैर-शून्य fuzzy_prefix_length निर्दिष्ट किया है। Fuzzy_prefix_length मिलान करने वाले शब्द की शुरुआत में वर्णों की संख्या सेट करता है। शून्य fuzzy_prefix_length को आपकी क्वेरी में शब्दकोष में शब्दकोष के सभी शब्दों को अस्पष्ट मिलान करने के लिए elasticsearch की आवश्यकता होगी। गैर-शून्य fuzzy_prefix_length निर्दिष्ट करके, आप प्रदर्शन की जांच और सुधार करने के लिए शब्दों की संख्या को काफी सीमित कर सकते हैं। जैसा कि आपने बताया है, यह कुछ हद तक वाइल्ड कार्ड प्रश्नों के समान है, सिवाय इसके कि टर्मिनल एल्गोरिदम शब्द अस्पष्ट ऑपरेटर के मामले में अधिक परिष्कृत है। – imotov

संबंधित मुद्दे