-Solr *Solr [#s7cf6d78] **設定値の外部化 [#u30f2247] システムプロパティを設定ファイルに利用可能。 tomcatならcatalina.propertiesかsetenv.shに設定しておき、 ${solr.master.enable}のような形で利用する。 **SOLR_HOME [#w11a7c40] |ディレクトリ名|必須or任意|説明| |conf|必須|solrconfig.xmlやschema.xml| |data|必須|index格納| |lib|任意|pluginのjar| |bin|任意|レプリケーションスクリプト置き場| **4.0インストール [#t7c18639] 試しに使ってみるだけなら、組み込みjettyで起動すると楽。TOMCATとの場合は単にwarを配置しておしまい!というわけではなくSOLR_HOMEに必要なファイルを配置して、solrconfig.xmlも配置しないとだめ! 5.x系からスタンドアロンとなりサーブレットコンテナ不要になった。 ***組み込みJettyでお試し [#la7cf05b] 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 [#c5a8772c] 解凍ディレクトリ/example/solrを指定する。 **利用サイト [#ea32625e] -Yahoo! JAPAN -E bay -CookPad **冗長構成 [#u2e57b09] master/slave構成と新しいSolrCloudという仕組みがある。properitesファイル化しておくと切り替えも楽。tomcatの場合はsetenv.shにするか、catalina.propertiesに記載しておく。 ***4.x系のmaster/slave [#rd5e24e5] http://x1.inkenkun.com/archives/254 -masterのsolrconfig.xml <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> -slaveのsolrconfig.xml <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の探索ロジック [#l22a1d9c] solr.xmlとその下部にぶら下がるcoreのsolrconfig.xmlが必要。<core>タグでまとめることも可能 http://blog.johtani.info/blog/2013/06/11/new-solr-xml/ **Solrクエリ [#c9dbc186] -ちょっと特殊なので注意。フィールドを指定するがテーブル名という概念が無いようだ。 -備考(note)がtestかつ値段が5万以下 q=note:test AND price:[* to 50000] -ソートさせる sort=price desc *スキーマ [#qe8b272a] DBで一般的な型(type)以外にも留意しておくべき点をまとめる。なおtypeは<type>タグないで定義するが、一般的なものはSolrがすでに用意してる。フィルターしたい場合は自分で定義する。 |indexed|インデックスが作成されそのフィールドで検索およびソートできるようになります。| |stored|値を検索結果に含めるか| |multiValued|1レコード(ドキュメント)に複数値を含めるか?| **列定義 [#b53212da] dynamicFieldを利用すると、名前が一致するものはその定義が利用される。 **アナライザ [#f2108bd1] アナライザを使うにはsolr.TextField型を指定して、<analyzer>タグの中でCharFilter,Tokenizer,TokenFilterの順に定義する。 *クエリ 4.0 [#yf54e2e9] **SQLとの対比 [#t280157d] |SQL|Solr| |field = "hoge"|fq=field:hoge| |field LIKE "hoge%"|fq=field:hoge*| |field NOT LIKE "hoge%"|fq=field:-hoge*| |field IS NOT NULL|fq=field:[* TO *]| |field IS NULL|fq=-field:[* TO *]| |field > 2012 AND field < 2013|fq=field:[2012 TO *]&fq=field[* TO 2013]| |field BETWEEN 2012 AND 2013|fq=field:[2012 TO 2013]| |ORDER BY field ASC|sort=field asc| **Solr Admin利用 [#h4d3ebee] ***全部消す [#tb2fea55] /update? |全部消す|?stream.body=<delete><query>*:*</query></delete>&commit=true| |指定|?stream.body=<delete><query>id:GB18030TEST</query></delete>&commit=true|