Solr

設定値の外部化

システムプロパティを設定ファイルに利用可能。 tomcatならcatalina.propertiesかsetenv.shに設定しておき、 ${solr.master.enable}のような形で利用する。

SOLR_HOME

ディレクトリ名必須or任意説明
conf必須solrconfig.xmlやschema.xml
data必須index格納
lib任意pluginのjar
bin任意レプリケーションスクリプト置き場

4.0インストール

試しに使ってみるだけなら、組み込みjettyで起動すると楽。TOMCATとの場合は単にwarを配置しておしまい!というわけではなくSOLR_HOMEに必要なファイルを配置して、solrconfig.xmlも配置しないとだめ!

5.x系からスタンドアロンとなりサーブレットコンテナ不要になった。

組み込みJettyでお試し

cd SOLR_HOME/example/
java -jar start.jar

http://localhost:8983/solr

cd SOLR_HOME/example/exampledoc
sh post.sh *.xml

管理画面の[Core Admin]でリロードする。

SOLR_HOME

解凍ディレクトリ/example/solrを指定する。

利用サイト

冗長構成

master/slave構成と新しいSolrCloudという仕組みがある。properitesファイル化しておくと切り替えも楽。tomcatの場合はsetenv.shにするか、catalina.propertiesに記載しておく。

4.x系のmaster/slave

http://x1.inkenkun.com/archives/254

 <requestHandler name="/replication" class="solr.ReplicationHandler" >
      <lst name="master">
        <str name="enable">true</str>
        <str name="replicateAfter">commit</str>
        <str name="replicateAfter">startup</str>
        <str name="confFiles">schema.xml,stopwords.txt</str>
        <str name="commitReserveDuration">00:00:10</str>
      </lst>
 </requestHandler>
 <requestHandler name="/replication" class="solr.ReplicationHandler" >
      <lst name="slave">
        <str name="enable">true</str>
        <str name="masterUrl">http://153.127.201.48:8080/solr</str>
        <str name="pollInterval">00:00:60</str>
      </lst>
 </requestHandler>

solr.xmlの探索ロジック

solr.xmlとその下部にぶら下がるcoreのsolrconfig.xmlが必要。<core>タグでまとめることも可能

http://blog.johtani.info/blog/2013/06/11/new-solr-xml/

Solrクエリ

q=note:test AND price:[* to 50000]
sort=price desc

スキーマ

DBで一般的な型(type)以外にも留意しておくべき点をまとめる。なおtypeは<type>タグないで定義するが、一般的なものはSolrがすでに用意してる。フィルターしたい場合は自分で定義する。

indexedインデックスが作成されそのフィールドで検索およびソートできるようになります。
stored値を検索結果に含めるか
multiValued1レコード(ドキュメント)に複数値を含めるか?

列定義

dynamicFieldを利用すると、名前が一致するものはその定義が利用される。

アナライザ

アナライザを使うにはsolr.TextField型を指定して、<analyzer>タグの中でCharFilter,Tokenizer,TokenFilterの順に定義する。

クエリ 4.0

SQLとの対比

SQLSolr
field = "hoge"fq=field:hoge
field LIKE "hoge%"fq=field:hoge*
field NOT LIKE "hoge%"fq=field:-hoge*
field IS NOT NULLfq=field:[* TO *]
field IS NULLfq=-field:[* TO *]
field > 2012 AND field < 2013fq=field:[2012 TO *]&fq=field[* TO 2013]
field BETWEEN 2012 AND 2013fq=field:[2012 TO 2013]
ORDER BY field ASCsort=field asc

Solr Admin利用

全部消す

/update?
全部消す?stream.body=<delete><query>*:*</query></delete>&commit=true
指定?stream.body=<delete><query>id:GB18030TEST</query></delete>&commit=true

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-10-14 (金) 13:16:53