SOLRを利用して企業検索プラットフォームを構築する3(プロファイル)

5221 ワード

solrを実行するのは簡単なことです.solrを効率的にプロジェクトを実行するには、これは容易ではありません.考慮すべき要素が多すぎる.ここで重要なのはsolrの構成を理解することです.プロファイルの各プロファイルの意味を理解すると、魚が水を得るように操作できます.
solrの中で主なのはsolrのメインディレクトリの下のschemaです.xml,solrConfig.xml、前の2つの文章を見たことがあるなら、solrのホームディレクトリがどこにあるか知っているはずです(c:solr-tomcatsolrconf).
この文章ではまずこのschemaについてお話しします.xml.
schema.xmlは、インデックスを追加したデータのデータ型を定義するデータテーブルプロファイルに相当します.主にtypes、fields、その他のデフォルト設定が含まれています.
1』まずtypesノード内に、name、class、positionIncrementGapなどのいくつかのパラメータを含むFieldTypeサブノードを定義する必要がある.nameはこのFieldTypeの名前であり、classはorgを指す.apache.solr.analysisパッケージに対応するclass名は、このタイプの動作を定義するために使用されます.FieldTypeで定義するときに最も重要なのは、このタイプのデータがインデックスを作成し、クエリーを行うときに使用するアナライザanalyzerを定義することです.分詞やフィルタリングが含まれています.例ではtextというFieldTypeを定義する際にindexのanalyzerでsolrを使用する.WhitespaceTokenizerFactoryという分詞パッケージは、スペース分詞で、solr.を使用します.StopFilterFactory,solr.WordDelimiterFilterFactory,solr.LowerCaseFilterFactory,solr.EnglishPorterFilterFactory,solr.RemoveDuplicatesTokenFilterFactoryというフィルタ.インデックス・ライブラリにtextタイプのインデックスを追加する場合、Solrはまずスペースで分詞し、分詞結果を指定したフィルタで順次フィルタし、最後に残りの結果をインデックス・ライブラリに追加してクエリーに備えます.Solrのanalysisパッケージには中国語をサポートするパッケージはありません.2番目の記事ではpaoding中国語分詞器の追加方法について詳しく説明しています.詳細は「
http://lianj-lee.javaeye.com/blog/424474
2」次の作業はfieldsノード内で具体的なフィールド(データベース内のフィールドのようなもの)を定義することであり、filedであり、filed定義にはname、type(以前に定義された各種FieldType)、indexed(インデックスされているかどうか)、stored(格納されているかどうか)、multiValue(複数の値があるかどうか)などが含まれる.
例:
Xmlコード
  •   
  •       
  •       
  •       
  •       
  •       
  •       
  •       
  •       
  •   
  • <fields> 	<field name="id" type="integer" indexed="true" stored="true" required="true" /> 	<field name="name" type="text" indexed="true" stored="true" /> 	<field name="summary" type="text" indexed="true" stored="true" /> 	<field name="author" type="string" indexed="true" stored="true" /> 	<field name="date" type="date" indexed="false" stored="true" /> 	<field name="content" type="text" indexed="true" stored="false" /> 	<field name="keywords" type="keyword_text" indexed="true" stored="false" multiValued="true" /> 	<field name="all" type="text" indexed="true" stored="false" multiValued="true"/> </fields>

    Fieldの定義は非常に重要で、いくつかのテクニックに注意しなければならない.複数の価値フィールドが存在する可能性がある場合は、multiValue属性をtrueに設定し、インデックスの構築がエラーを投げ出すことを避ける.適切なフィールド値を格納する必要がない場合は、storedプロパティをfalseに設定します.
    3)コピーフィールドを作成し、すべての全文フィールドを1つのフィールドにコピーして、統一的な検索を行うことを提案します.
    Xmlコード
  •   
  • <field name="all" type="text" indexed="true" stored="false" multiValued="true"/>

    コピーフィールドのノードでコピー設定を完了します.
    Xmlコード
  •   
  •   
  • <copyField source="name" dest="all"/> <copyField source="summary" dest="all"/>

    4」に加えて、動的フィールドを定義することもできます.動的フィールドとは、特定の名前を指定する必要はありません.フィールド名を定義するルール、例えばdynamicFieldを定義し、nameを*_とします.i,typeをtextとして定義すると,このフィールドを使用するとき,i末尾のフィールドは、この定義に合致すると考えられます.例えば、name_i,gender_i,school_iなど.
    schema.xmlプロファイルは概ねそうですが、詳細はsolr wiki http://wiki.apache.org/solr/SchemaXmlを参照してください.もし後で時間があれば、私は定期的にこの文章を更新して、もっと多くの初心者に便利さをもたらすことができるようにします.