जब मैं किसी फ़ील्ड पर खोज करता हूं तो स्कोरिंग क्षेत्र की लंबाई को ध्यान में रखती नहीं है (यानी लंबे पाठ वाले दस्तावेज कम के समान होते हैं और किसी कारण से पहले रखा जाता है)। यकीन नहीं है कि मैं क्या गलत कर रहा हूँ।Elasticsearch EdgeNgram कम परिणाम लौटने से पहले
अनुक्रमण क्षेत्रों के लिए इस प्रकार है:
"name": {
"type": "string",
"analyzer": "autocomplete"
},
"_alias": {
"type": "string",
"analyzer": "autocomplete"
}
विश्लेषक:
"autocomplete": {
"char_filter": [
"special_character_mapping"
],
"filter": [
"lowercase",
"autocomplete_filter"
],
"tokenizer": "whitespace"
}
फिल्टर:
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
}
क्वेरी 1:
{
"query": {
"multi_match": {
"query": "brown fo",
"type": "most_fields",
"fields": [
"name",
"_alias"
],
"use_dis_max": true,
"tie_breaker": 1,
"minimum_should_match": "100%",
"analyzer": "standard"
}
}
}
इस दस्तावेज की तरह कर रहे हैं की एक बहुत कुछ देता है:
- ढंग से लोमड़ी
- भूरा लोमड़ियों
- के लिए
Browny और 10 वें स्थान पर या तो नहीं है अंत में:
- ब्राउन लोमड़ी
नहीं 15 वें स्थान पर एक दस्तावेज़ (ब्राउन लोमड़ी पेड़) या तो भी एक उपनाम "ब्राउन" जाता है कि पर ध्यान नहीं दिया गया है कि है कि वहाँ का उल्लेख।
क्वेरी 2:
- ब्राउन लोमड़ी पेड़
- भूरा लोमड़ियों
- ब्राउन लोमड़ी :
{
"query": {
"multi_match": {
"query": "brown fo",
"type": "cross_fields",
"fields": [
"name",
"_alias"
],
"use_dis_max": true,
"tie_breaker": 1,
"minimum_should_match": "100%",
"analyzer": "standard"
}
}
}
यह कुछ हद तक बेहतर परिणाम देता है
जहां दूसरे और 3 डी दस्तावेज़ हमेशा समान होते हैं। पहले व्यक्ति के पास उपनाम "ब्राउन" होता है और ठीक से सामने आता है।
मैंने सभी प्रकार के multi_match प्रकारों और query_string की कोशिश की है लेकिन परिणाम समान थे।
छोटे पाठ वाले दस्तावेज़ों को कैसे प्राप्त करें (ल्यूसीन इसे स्वयं ही करना चाहिए?) बाकी के सामने?
मेरे पास दो बिंदु हैं: 1) आप अपनी क्वेरी में 'मानक' विश्लेषक क्यों निर्दिष्ट करते हैं भले ही आपने 'autocomplete' को आपके द्वारा खोजे जाने वाले फ़ील्ड के लिए खोज और अनुक्रमणिका विश्लेषक के रूप में निर्दिष्ट किया हो और 2) आप' 'प्रकार' गायब हैं ":" कस्टम "' आपके 'स्वत: पूर्ण' विश्लेषक में। खोज समय पर – Val
मानक का उपयोग किया जाना चाहिए (https://www.elastic.co/guide/en/elasticsearch/guide/current/_index_time_search_as_you_type.html)। हालांकि इस प्रकार के बारे में पता नहीं है, कोड में कैसे खो गया है। इसका मतलब क्या है यदि आप टाइप नहीं करते हैं: "कस्टम"? –
क्या आपने स्कोरिंग की गणना कैसे की है यह देखने के लिए आपने '? Expl = true' जोड़ने का प्रयास किया है? – Val