solrのanalyzer

7431 ワード

次はsolrの分詞の配置で、見えませんか?solrのAnalyzers,Tokenizers,and Token Filtersについて理解する必要があります.
 <fieldType name="text" class="solr.TextField"
                        positionIncrementGap="100" compressThreshold="1000">
                        <analyzer type="index">
                                <tokenizer class="solr.StandardTokenizerFactory" />
                                <filter class="solr.WordDelimiterFilterFactory"/>
                                <filter class="solr.LowerCaseFilterFactory" />
                        </analyzer>
                        <analyzer type="query">
                                <tokenizer class="solr.StandardTokenizerFactory" />
                                <filter class="solr.WordDelimiterFilterFactory"/>
                                <filter class="solr.LowerCaseFilterFactory" />
                        </analyzer>
                </fieldType>

本文はこの英語のホームページの理解に基づいてhttp://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters概要ドキュメント(documentは一連のfieldの集合)をインデックス化すると、各field(documentとfileはluceneの概念)のデータが分析され、分詞や多段階の分詞フィルタリングなどの操作が行われます.この一連の動作は何ですか.直観的な理解では,一言を単一の単語に分け,文の中の空白記号を取り除き,余分な語を取り除き,同義語の置換を行うなどである.【例】what a beautiful day?どのような処理が行われますか?what,aおよび疑問符は削除され,最終処理結果はbeautifulとday(beautiful dayかもしれない)となる.インデックスの場合だけでなく、クエリーの場合もこれらの作業を行い、通常、インデックスとクエリーは同じ方法で処理されます.この目的は、インデックスとクエリーの正確な一致を保証することです.次の例では、異なる処理を行う場合の不一致について説明する.【例】ABCDインデックス分詞はAB CDであり、クエリー時分詞はABC Dであり、クエリーのマッチング結果は0であることが明らかである.語性変換1つは、runをruns,runningに拡張するなど、1つの語をその多様な形式に拡張することである.もう1つは,runns,runningなどをrunに「収縮」する語性規約である.前者はインデックスまたはクエリーのいずれかの端でのみ使用でき、後者は両端で同時に使用する必要があります.アナライザ(Analyzer)
アナライザは、セクション:分詞器とフィルタを含む.分詞器は、文の分詞を単一の語にすることを意味し、フィルタは分詞の結果をフィルタリングし、例えば中国語で「の」「呀」など、文の主体の意味にあまり影響しない語を削除する.英語で似ているのは「is」「a」などです.通常、インデックスと分詞の両端には同じ分詞器を採用する必要があります.solrにはいくつかの分詞器が用意されており、自社の分詞器を使用する必要がある場合はsolrモード(Solr schema)を変更する必要があります.    schema.xmlファイルは、通常fieldタイプのみsolrであるテキストが分析される方法を変更する2つの方法を可能にする.TextFieldのfieldのコンテンツでは、アナライザをカスタマイズできます.方法1:任意のorgを使用する.apache.lucene.analysis.Analyzerのサブクラスを設定します.
 
 fieldtype name="nametext"class="solr.TextField">      
 
方法2:TokenizerFactoryを指定し、後に一連のTokenFilterFactories(列挙された順序で機能する)とともに使用され、Factoriesは分詞器と分詞フィルタを作成するために使用され、分詞器と分詞フィルタの準備構成に使用され、the overhead of creation via reflectionを回避することを目的としています.
 
                                
説明が必要なのは、Any Analyzer,TokenizerFactory,or TokenFilterFactoryはパッケージ名付きの全クラス名で指定する必要があります.Solrのclasspathパスの下にあることを確認してください.orgについて.apache.solr.analysis.* パッケージされたクラスはsolr.*のみです.指定できます.自分の分詞器とフィルタを使う必要がある場合は、BaseTokenizerFactoryまたはBaseTokenFilterFactoryのサブクラスである必要があります.下のようです.  public class MyCustomFilterFactory extends BaseTokenFilterFactory {
public TokenStream create(TokenStream input) {     return new MyCustomFilter(input);   } }
 
SolrはどんなTokenizerFactoriesを提供していますか?---------------------------------------------------1.  solr.LetterTokenizerFactory作成org.apache.lucene.analysis.LetterTokenizer. 分詞例:「I can't」=>「I」>「can」>「t」2.  solr.WhitespaceTokenizerFactory作成org.apache.lucene.analysis.WhitespaceTokenizer 3.  solr.LowerCaseTokenizerFactory作成org.apache.lucene.analysis.LowerCaseTokenizer分詞例:「I can't」=>「i」>「can」>「t」4.  solr.StandardTokenizerFactory作成org.apache.lucene.analysis.standard.StandardTokenizer分詞例:「I.B.M.cat's can't」=>ACRONYM:「I.B.M.」,APOSTROPHE:「cat's」,APOSTROPHE:「can't」説明:この分詞器は,次のtypeに敏感なフィルタを処理するために自動的に各分詞にtypeを追加し,現在はStandardFilterのみがTokenのタイプに敏感である.
 
 
5.  solr.HTML StripWhitespaceTokenizerFactoryは結果からHTMLタグを除去し、結果をWhitespaceTokenizer処理に渡す.例:mylinkmy link
hello hello hello<-- f('<--internal-->'); --> hello if a hello a<b A Alpha&Omega Ω aSolrにはどのようなTokenFilterFactoriesがありますか?1.  solr.StandardFilterFactory作成:org.apache.lucene.analysis.standard.StandardFilter. 頭文字の略語の点とTokenの後ろの’sを削除します.クラスのあるTokenにのみ作用し、StandardTokenizerによって生成されます.例:StandardTokenizer+StandardFilter"I.B.M.cat's can't"=>"IBM","cat","can't"2.  solr.LowerCaseFilterFactory作成:org.apache.lucene.analysis.LowerCaseFilter. 3.  solr.TrimFilterFactory【solr 1.2】作成:org.apache.solr.analysis.TrimFilterはTokenの両端の空白を取り除く例:「Kittens!   ", "Duck"==> "Kittens!","Duck".4.solr.StopFilterFactory作成:org.apache.lucene.analysis.StopFilterは次のような共通語を削除し、多くは虚語である.「a」、「an」、「and」、「are」、「as」、「at」、「be」、「but」、「by」、「for」、「if」、「in」、「into」、「is」、「it」、「no」、「not」、「of」、「on」、「or」、「s」、「such」、「t」、「that」、「the」、「their」、「then」、「thee」、「these」、「they」、「this」、「to」、「was」、「was」Will,“with”カスタマイズの共通語表の使用はschema.xmlファイルの「words」プロパティは、以下のように指定されます.                 5.   solr.KeepWordFilterFactory【solr 1.3】作成:org.apache.solr.analysis.KeepWordFilterの役割とsolr.StopFilterFactoryとは逆に、予約語のリストは「word」属性で指定することもできます.            6. solr.LengthFilterFactory作成:solr.LengthFilterは長さのある範囲外の語をフィルタします.範囲設定は以下の通りです.             7.  solr.PorterStemFilterFactory作成:org.apache.lucene.analysis.PorterStemFilterはPorter Stemming Algorithmアルゴリズムを用いて単語の接尾辞を除去し,例えば複数の形式を単数の形式にし,3人称動詞を1人称にし,現在分詞を一般の現在時の動詞にする.8.  solr.EnglishPorterFilterFactory作成:solr.EnglishPorterFilterは文の主幹の処理について、「protected」は修正が許されない語のファイルを指定します.9.  solr.SnowballPorterFilterFactory異なる言語についての語幹処理10.solr.WordDelimiterFilterFactoryセパレータの処理について.11.solr.SynonymFilterFactoryの同義語処理について.12.solr.RemoveDuplicatesTokenFilterFactory重複処理を回避します.
 
原文:http://damoqingquan.iteye.com/blog/231225
参照先:http://lionelf.iteye.com/blog/1171508