Lucene は、すべて「コーディング」を使用して検索とインデックス作成を行います... なぜ Solr は同じことをしないのですか? なぜ schema.xml が必要なのですか? その重要性は何ですか?必要なすべてのフィールドを schema.xml に配置しないようにする方法はありますか? (私は、動的フィールドが進むべき道だと思いますよね?)
3 に答える
それはまさにそれが構築された方法です。Lucene はライブラリなので、コードをリンクします。一方、Solr はサーバーであり、場合によってはごくわずかなコーディングで使用できます (たとえば、DataImportHandler を使用してインデックスを作成し、Velocity プラグインを使用してブラウズおよび検索します)。
スキーマを使用すると、各フィールドの分析方法とクエリ方法を宣言的に定義できます。
Lucene に基づくスキーマのないサーバーが必要な場合は、ElasticSearchをご覧ください。
常に schema.xml を微調整することを避けたい場合は、動的フィールドが最適です。たとえば、私は Sunspot の schema.xml が好きです。これは動的フィールドを使用して、フィールド名に型ベースの命名規則を設定します。
https://github.com/outoftime/sunspot/blob/master/sunspot/solr/solr/conf/schema.xml
このスキーマに基づいて、という名前のフィールドcontent_text
はテキスト フィールドとして解析されます。
<dynamicField name="*_text" stored="false" type="text" multiValued="true" indexed="true"/>
これは、テキストの以前の定義に対応しますfieldType
。
私が扱うほとんどの schema.xml ファイルは、Sunspot スキーマに基づいています。schema.xml で適切な規則を確立して再利用することで、多くの時間を節約できることがわかりました。
Solrはスタンドアロンの検索サーバーとして機能し、コーディングなしで構成できます。Luceneのフロントエンドと考えることができます。schema.xmlファイルの目的は、インデックスを定義することです。
可能であれば、スキーマファイルですべてのフィールドを定義することをお勧めします。これにより、これらのフィールドのインデックス作成方法をより細かく制御でき、コピーフィールドを利用できるようになります(必要な場合)。