Posted at

solrの勉強はじめました。Lv.1

書いてあること

1. Solrについて

2. スキーマについて

3. 外部の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