書いてあること
- Solrについて
- スキーマについて
- 外部のDBとの接続について
Solrについて
Solr = 全文検索エンジンで、Luceneをベースに作られている。
一般に検索方法は、
1. 順次検索方式(grepやLIKEなど)
2. 転置インデックス方式
の2通りが存在し、solrは後者。
クライアントから検索リクエストをサーチハンドラが受け取り、その中に含まれる検索式をもとにインデックスから検索し、
得られた結果をクライアントまで返す。
スキーマについて
スキーマ = データベース構造のこと。
Solrにどのようなデータが投入でき、検索できるかを定義することができる。
スキーマの定義によってSolrの検索挙動も大きく変わる(らしい)
定義の方法は、Schema APIとSchema.xmlの2通りがある。
- Schema APIはmanaged-schemaディレクトリ内でjson形式で、定義する。
スキーマ定義の構成要素は
要素名 | 定義の省略 | SchemaAPIでの編集 |
---|---|---|
FieldType | 不可 | 可能 |
Field | 可能 | 可能 |
Dynamic Field | 可能 | 可能 |
UniqueKeyField | 可能 | 可能 |
CopyField | 可能 | 可能 |
Similarity | 可能 | 可能 |
の6つ。
フィールドタイプにはAnalyzerをもつものともたないものがある。
Analyzarとは、任意のワードで文書を検索するためのインデックスをつくる仕組み
Analyzer = charfilter + tokenizer + filter
処理の順番は、charfilter → tokenizer → filter
tokenizerは、「トークン」を出力する。トークンは、文字列だけでなく他のトークンとの位置関係やドキュメント内でのオフセットをもつ。
#外部DBとの接続について
外部のデータソースに格納されたデータをインポートし、solrにインデックスするにはデータインポートハンドラを使う。
solrconfig.xmlで、リクエストハンドラを定義する。
<requestHandler name="/dataImport" class="org.solr.handler.dataimprt.dataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
db-data-config.xmlで、データインポートハンドラの設定をしている。
データインポートハンドラで、RDBなどの外部のデータベースとのマッピングを行うことができる。
参考文献など
http://d.hatena.ne.jp/shinobu_aoki/20110819/1313773180