Solr
テキスト検索のベンチマークをしたいと思い立ちました。 テストデータにはWikipediaのデータを使おうと思います。 現在 日本語Wikipediaのページ数は約130万ページです。 Solrに入れるときには1ページ1ドキュメントになるので 130万ドキュメントのインデック…
ついに日本語で書かれたSolrの本が出ました。 Solrの日本人コミッター 関口 宏司さんに加えて Solrのヘビーユーザーである(株)リクルートの中野 猛 さんが記事を書かれているとても楽しみな本です。 もちろん私も買いましたよ。これでSolrや検索エンジンの利…
検索結果をソートするにはクエリストリングで以下のように指定します。 sort=フィールド名 asc または desc 具体的にはこんな感じ。 http://localhost:8080/solr/select?q=role&sort=ISSUED%20desc ISSUED というフィールドの値の大きい順にソートしています…
ボクは Solr にデータを入れるときは、一度 MySQLのデータベース上で ドキュメントデータを成形してから DataImportHandler を使って Solr にデータを移すというやり方をしています。 DataImportHandler というのは Solr に標準で付いているツールで、データ…
Solr1.5 は クラウドの方に力を入れるらしいのですが http://wiki.apache.org/solr/SolrCloud 複数の Solr から同時に検索する Distributed Search の機能は Solr1.3 のころから備わっています。使い方はとっても簡単で、検索時に shards というパラメータを…
Solr の検索結果はスコア順にソートされるのがデフォルトですが、時にはその順位をランダムに並べ替えたいこともあると思います。 ランダムに並べ替えるには RandomSortField を使います。必要なのは schema.xml に下記の記述を追記するだけす。 既にインデ…
大手SIから「検索ヒット率」が低くて困っていると言われたので 再現率を上げればよいのかと資料作って行ってみたら 実は上げたいのは精度の方だったという笑えない話で 作った資料がボツになったのでここに上げときます。 検索エンジンで取りこぼしを減らす(…
Solr 本家で 「 Solr's first book is published! 」 と紹介されていた 「Solr 1.4 Enterprise Search Server」が日本国内でもデリバリーされています。 内容は、Solrの入門書といった感じで初心者でも分かりやすいように工夫されて書かれており Solr のいろ…
schema.xml の データタイプの定義にオプションとして指定できる sortMissingLast と sortMissingFirst ですが これはソート対象となるフィールドに値が入っていないドキュメントを、ソート結果の最後に出すのか、最初に出すのかの指定です。 sortMissingLas…
デフォルトで用意されている Solr の数値型データタイプには、基本形として int, float, long, double の4種類があります。 さらにそれぞれに最初に t, p , s が追加された、tint, pint, sint 等のバリエーションがあります。 schema.xmlのサンプルより抜粋 …
祝 Lucene2.9.0 リリース!! 2009/9/25 に Lucene2.9 がようやく正式リリースされました。 便乗して久しぶりの Solr ネタです。 この記事は Lucene2.9.0 がバンドルされている 2009/09/28版の Solr をもとに書いています。 http://people.apache.org/builds/l…
Solr に入れるデータが数万件程度の場合には Excel でデータが用意されることもあると思います。 この場合には Excel から CSV に吐き出して CSVLoader でインポートするのが便利でラクチンです。 ところが Excel は行の最後のカラムに値が入ってなかったり…
Solr ではデータの更新を行った後に commit を実行することで更新が反映されます。 「あー、やっぱり今のなし。なし。」って感じで更新をなかったことにするのは rollback です。 この辺は RDBMS でもよく使われるコマンドですね。 rollback は Solr1.4から…
前回 Nutch の Lucene 形式のインデックスを Solr から覗いてみました。 中身を覗いてみることはできたものの以下の課題もでました。 host や site、contentといったデータが表示されない。 日本語で検索できない。 この辺の対応には Nutch のデータを使って…
Nutch はクロールしたデータの管理に Lucene 形式 のインデックスを使っています。 このため Lucene を使って Nutch のインデックスにアクセスしたり、Solr を使って検索することができます。 ちなみに3者の関係を整理するとこんな感じです。 Nutch : Webク…
マルチコアは一つの Solr で複数のインデックスをコントロールするための技術です。 インデックス毎にそれらをハンドリングする SolrCore(以下コア) と呼ばれるインスタンスを並行して実行することでそれを実現しています。マルチコアはバージョン1.3 から導…
Solr はサーブレットとして実装されているので、実行するにはサーブレットコンテナが必要になります。 Solr には Jetty というサーブレットコンテナがバンドルされているのでその上で動かすこともできるのですが、Tomcat の方が機能的にすぐれていたり、Nutc…
Solrにデータを入れてみます。Solr 等の検索エンジンではデータを入れることインデキシングするというようです。早速インデキシングしてみましょう。 Solr の起動 まずはSolrを起動します。インストールは [Solr] Solr1.4 インストール手順 ( Linux にコマン…
Solr をインストールする SolrをLinuxにインストールには、下記のようにコマンドを4回実行するだけでできます。 % wget http://people.apache.org/builds/lucene/solr/nightly/solr-2009-05-02.tgz % tar xvfz solr-2009-05-02.tgz % cd apache-solr-nightly…
新しくインデキシングされたドキュメントを検索結果の上位に表示したいというニーズは割とよくあると思います。 フレッシュネスブーストと呼ばれる手法です。 Solr の場合 TIMESTAMP などの日付でソートすることもできるのですが Solr はソートがあまり上手…
詳細は下を参考にしていただきたいのですが Nグラムは再現率が高いものの精度は低くなりがちです。 逆に形態素解析は再現率は低いものの精度は高くなります。 [Solr][Sen] 日本語形態素解析器Senを導入する その4 再現率が高いNグラム [Solr][Sen] 日本語形…
Nグラムと形態素解析の比較の2回目です。 再現率が高いのがわかっているならNグラムを選択すればいいように思えるのですが、 Nグラムには再現率が高い故に精度が落ちるという問題があります。 まずは、この手の話をするときによく出てくる「京都•東京都」問…
今回と次回の記事で形態素解析とNグラムの違いをみていきたいと思います。 結論から言うとNグラムの方が再現率が高く、検索語が含まれる文章を確実に拾い上げることができます。 逆に形態素解析の方は、解析ミスによって取りこぼすことがあります。 形態素解…
lucene-ja とは lucene-ja は Sen のラッパーとして Solr に日本語形態素解析機能を提供します。 大雑把に言うと検索エンジン Solr と 日本語形態素解析器 Sen をつなぎ合わせる役割です。Solrから形態素解析器によってトークナイズされた単語で、検索できる…
形態素解析用フィールドをスキーマに追加してインデキシングしてみます。 今回はNグラムと形態素解析の違いを確認するために、全く同じ文章をNグラムと形態素解析で2重にインデキシングしてみます。 インデキシング対象のデータはNグラムのときとと同様のブ…
Senとは Sen はJAVAで書かれた日本語形態素解析器です。 辞書を使って日本語の文章をトークナイズします。下は「Sen はJAVAで書かれた日本語形態素解析器です」をSenでトークナイズした例です。 Solrに組み込むことで、日本語文章を意味のある単語単位にトー…
本日Solr ver1.3がついにリリースされました。 ver1.2から1年3ヶ月ぶりのバージョンアップです。 いゃー長かったですね。お試しは以下からどうぞ。 http://ftp.kddilabs.jp/infosystems/apache/lucene/solr/ ではでh
SolrやFASTやオートノミーといった全文検索エンジンとMySQLやPostgreSQLやOracle等のいわゆるRDBMSと比較してなにが違うのか、導入するとどんなメリットがあるのかといったことをよく聞かれます。最初に説明するのは次の3つです。 検索速度があがります 名前…
Solrって? Solrはオープンソースの検索エンジンです。 JAVAで記述されていてサーブレットとして実装されています。TomcatやJettyなどのサーブレットコンテナの上で動きます。 Apacheプロジェクトで開発が進められています。 http://lucene.apache.org/solr/…
ついにCJKAnalyzerを使って Solrに日本語ドキュメントをインデキシングするときが来ました。 ココまでくるとデータをPOSTするだけなのですが ただPOSTするだけだとつまらないのでCSVファイルをPOSTする方法を紹介します。 Solrにインデキシングするには XML…