solr
कैसे एक कस्टम फ़ील्ड टाइप बनाने के लिए
खोज…
टिप्पणियों
कस्टम जावा वर्ग आधारित क्षेत्र पर टिप्पणी:
यह एक बड़े लेख कस्टम सोल का एक छोटा सा हिस्सा है जो कस्टम फ़ील्ड तुलनित्र के आधार पर सोलर दस्तावेजों को सॉर्ट करने के लिए लिखे गए बाहरी क्षेत्र का उपयोग करके सॉर्ट करता है।
मौजूदा सोलर फ़ील्ड से बनाए गए कस्टम फ़ील्ड पर टिप्पणी:
अपाचे ने इस विषय पर एक विस्तृत दस्तावेज बनाया है - अंडरस्टैंडिंग एनालाइजर, टोकनएनेर्स, और फिल्टर ।
अपने कस्टम जावा वर्ग से एक कस्टम सोल फ़ील्ड प्रकार बनाएँ
स्कीमा परिवर्तन:
आपको अपने solr स्कीमा फ़ाइल में एक नए फ़ील्ड प्रकार को परिभाषित करने की आवश्यकता होगी और फिर आप उस प्रकार के फ़ील्ड बना सकते हैं। उदाहरण स्कीमा स्निपेट:
<!-- Source: solr/example/.../conf/schema.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="adam" version="1.3">
<types>
...
<fieldType name="rank_t" class="org.apache.solr.schema.ext.RankFieldType"/>
</types>
<fields>
...
<field name="rank" type="rank_t" indexed="true" stored="true"/>
</fields>
...
</schema>
कस्टम क्षेत्र प्रकार के लिए जावा वर्ग:
// Source: src/java/org/apache/solr/schema/ext/RankFieldType.java
package org.apache.solr.schema.ext;
import java.io.IOException;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.search.SortField;
import org.apache.solr.response.TextResponseWriter;
import org.apache.solr.schema.FieldType;
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.ext.RankFieldComparatorSource;
public class RankFieldType extends FieldType {
@Override
public SortField getSortField(SchemaField field, boolean top) {
return new SortField(field.getName(), new RankFieldComparatorSource(), top);
}
@Override
// copied verbatim from GeoHashField method
public void write(TextResponseWriter writer, String name, Fieldable f) throws IOException {
writer.writeStr(name, f.stringValue(), false);
}
}
उपलब्ध फ़ील्ड प्रकारों से कस्टम फ़ील्ड प्रकार बनाएँ
चलिए उदाहरण पर जाने से पहले कुछ सैद्धांतिक ज्ञान प्राप्त करते हैं। एनालाइजर , टोकनएनाइजर , और फिल्टर यहां तीन महत्वपूर्ण शब्द इस्तेमाल किए जा रहे हैं। ऐसे कस्टम फ़ील्ड बनाने के लिए आपको एक टोकन और एक या अधिक फ़िल्टर के साथ एक विश्लेषक बनाने की आवश्यकता होगी। जैसा कि यहां बताया गया है , आपके पास प्रति विश्लेषक केवल एक ही टोकन हो सकता है, लेकिन इस सीमा को पार करने के तरीके हैं।
<fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.PatternReplaceFilterFactory" replace="all" replacement="" pattern="([^a-z])"/>
</analyzer>
</fieldType>
एक और उदाहरण:
<fieldType name="lowercase_text" class="solr.TextField" positionIncrementGap="150">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
विवरण के साथ एक और उदाहरण:
<fieldType name="text_stem" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"/>
</analyzer>
</fieldType>
यह उदाहरण सोलर के मानक टोकन के साथ शुरू होता है, जो क्षेत्र के पाठ को टोकन में तोड़ देता है। फिर वे टोकन सोलर के मानक फ़िल्टर से होकर गुजरते हैं, जो कि योगों को डॉट्स से हटाता है, और कुछ अन्य सामान्य ऑपरेशन करता है। सभी टोकन तब निचले हिस्से पर सेट किए जाते हैं, जो क्वेरी समय पर केस-असंवेदनशील मिलान की सुविधा प्रदान करेगा। उपरोक्त उदाहरण में अंतिम फिल्टर एक स्टेमर फिल्टर है जो पोर्टर स्टेमिंग एल्गोरिदम का उपयोग करता है। एक स्टेमर मूल रूप से मानचित्रण नियमों का एक सेट होता है, जो किसी शब्द के विभिन्न रूपों को आधार, या स्टेम, शब्द से अलग करता है, जिससे वह व्युत्पन्न होता है। उदाहरण के लिए, अंग्रेजी में "हग्स", "हगिंग" और "हग्ड" शब्द सभी शब्द "हग" के रूप हैं। स्टेमर इन सभी शब्दों को "हग" के साथ बदल देगा, जो कि अनुक्रमित होगा। इसका मतलब है कि "हग" के लिए एक क्वेरी "हग" शब्द से मेल खाएगी, लेकिन "विशाल" नहीं।
ऐसे कस्टम क्षेत्र का उदाहरण उपयोग:
<field name="keywords" type="text_stem" indexed="true" stored="true" />
उपलब्ध टोकन प्रकार की सूची : टोकन प्रकार की सूची
उपलब्ध फ़िल्टर प्रकारों की सूची : फ़िल्टर प्रकारों की सूची