त्वरित प्रश्न, मुझे नहीं पता कि समानार्थी शब्दों से निपटने के लिए कैसे एक जगह है! मैं निम्नलिखित config है:सोलर - समानार्थी शब्द एकाधिक शब्द
SOLR कॉन्फ़िग फ़ाइल
<fieldType ... >
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
catenateWords="1"
preserveOriginal="1"
splitOnCaseChange="1"
generateWordParts="1"
generateNumberParts="1"
catenateNumbers="1"
catenateAll="1"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30" side="front"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LengthFilterFactory" min="2" max="70" />
<filter class="solr.SynonymFilterFactory" synonyms="syn.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
मेरे फ़ाइल: syn.txt
st., st => saint
istambul => istanbul
airport, apt => aéroport
NYC => New York
pt., pt => port
brussels => bruxelles
सब कुछ पर्याय छोड़कर ठीक काम कर रहा था:
"NYC => New York"
मैंने कुछ शोध किया और मुझे निम्नलिखित मिला:
ध्यान रखें कि जबकि SynonymFilter खुशी के साथ कई शब्दों से युक्त समानार्थी शब्द (यानी: "समुद्र बिस्कुट, समुद्र biscit, Seabiscuit") काम करेंगे
इस जैसे समानार्थी शब्दों से निपटने के लिए दृष्टिकोण की सिफारिश की, विस्तार करने के लिए है अनुक्रमण करते समय समानार्थी। ऐसा इसलिए है क्योंकि दो संभावित समस्याएं हैं जो क्वेरी समय पर व्यवस्थित कर सकती हैं:
ल्यूसीन क्वेरीपार्सर विश्लेषक को कोई भी पाठ देने से पहले सफेद स्थान पर टोकन करता है, इसलिए यदि कोई व्यक्ति समुद्र बिस्किट शब्दों की खोज करता है तो विश्लेषक को दिया जाएगा शब्द "समुद्र" और "बिस्किट" अलग से हैं, और यह नहीं पता कि वे एक समानार्थी से मेल खाते हैं।
वाक्यांश खोज (यानी: "समुद्र बिस्किट") क्वेरीरीसर को पूरी स्ट्रिंग को विश्लेषक को पास करने का कारण बनता है, लेकिन यदि SynonymFilter समानार्थी का विस्तार करने के लिए कॉन्फ़िगर किया गया है, तो जब क्वेरीपर्सर को टोकन की परिणामस्वरूप सूची वापस मिलती है विश्लेषक, यह एक MultiPhraseQuery का निर्माण करेगा जो वांछित प्रभाव नहीं होगा।
यह विश्लेषक के लिए उपलब्ध सीमित तंत्र की वजह से इंगित करता है कि दो पद एक ही स्थिति पर कब्जा करते हैं: यह इंगित करने का कोई तरीका नहीं है कि एक "वाक्यांश" शब्द के समान स्थिति पर कब्जा करता है।
हमारे उदाहरण के लिए, जिसके परिणामस्वरूप MultiPhraseQuery होगा "(समुद्र | समुद्र | Seabiscuit) (बिस्कुट | biscit)" जो "Seabiscuit" के सरल मामले से मेल नहीं होगा एक दस्तावेज
में उत्पन्न तो मैं करने की कोशिश की मेरी कॉन्फ़िगरेशन फ़ाइल को बदलने और इंडेक्सिंग पर अपने फ़िल्टर जोड़ने के लिए, लेकिन यह काम नहीं कर रहा है।
क्या कुछ विचार हैं?
बहुभाषी समानार्थी शब्द के साथ सोलर में इस समस्या से सावधान रहें: http://www.opensourceconnections.com/blog/2013/10/27/why-is-multi-term-synonyms-so-hard-in-solr/ –