Solr

Wikipedia のテキストデータを使ってベンチマークをする! その1 思い立ったこと

テキスト検索のベンチマークをしたいと思い立ちました。 テストデータにはWikipediaのデータを使おうと思います。 現在 日本語Wikipediaのページ数は約130万ページです。 Solrに入れるときには1ページ1ドキュメントになるので 130万ドキュメントのインデック…

日本語の解説本ついに出ました

ついに日本語で書かれたSolrの本が出ました。 Solrの日本人コミッター 関口 宏司さんに加えて Solrのヘビーユーザーである(株)リクルートの中野 猛 さんが記事を書かれているとても楽しみな本です。 もちろん私も買いましたよ。これでSolrや検索エンジンの利…

sort ソート そーっと

検索結果をソートするにはクエリストリングで以下のように指定します。 sort=フィールド名 asc または desc 具体的にはこんな感じ。 http://localhost:8080/solr/select?q=role&sort=ISSUED%20desc ISSUED というフィールドの値の大きい順にソートしています…

データベースに入っているデータを Solr に入れる一つの方法 Data Import Request Handler ( DataImportHandler )

ボクは Solr にデータを入れるときは、一度 MySQLのデータベース上で ドキュメントデータを成形してから DataImportHandler を使って Solr にデータを移すというやり方をしています。 DataImportHandler というのは Solr に標準で付いているツールで、データ…

Distributed Search 複数の Sol rから同時に検索することで パフォーマンスを上げる方法

Solr1.5 は クラウドの方に力を入れるらしいのですが http://wiki.apache.org/solr/SolrCloud 複数の Solr から同時に検索する Distributed Search の機能は Solr1.3 のころから備わっています。使い方はとっても簡単で、検索時に shards というパラメータを…

検索結果をランダム random に並べる Solr1.4 RandomSortField

Solr の検索結果はスコア順にソートされるのがデフォルトですが、時にはその順位をランダムに並べ替えたいこともあると思います。 ランダムに並べ替えるには RandomSortField を使います。必要なのは schema.xml に下記の記述を追記するだけす。 既にインデ…

再現率を上げる - 取りこぼしを減らす技術について

大手SIから「検索ヒット率」が低くて困っていると言われたので 再現率を上げればよいのかと資料作って行ってみたら 実は上げたいのは精度の方だったという笑えない話で 作った資料がボツになったのでここに上げときます。 検索エンジンで取りこぼしを減らす(…

1.4 Enterprise Search Server 買いました

Solr 本家で 「 Solr's first book is published! 」 と紹介されていた 「Solr 1.4 Enterprise Search Server」が日本国内でもデリバリーされています。 内容は、Solrの入門書といった感じで初心者でも分かりやすいように工夫されて書かれており Solr のいろ…

schema.xml sortMissingLast とか sortMissingFirst って何? って質問されたので答えをメモ

schema.xml の データタイプの定義にオプションとして指定できる sortMissingLast と sortMissingFirst ですが これはソート対象となるフィールドに値が入っていないドキュメントを、ソート結果の最後に出すのか、最初に出すのかの指定です。 sortMissingLas…

schema.xml 数値型データタイプの前についてる t, s, p って何? て質問されたので、その答えをメモ

デフォルトで用意されている Solr の数値型データタイプには、基本形として int, float, long, double の4種類があります。 さらにそれぞれに最初に t, p , s が追加された、tint, pint, sint 等のバリエーションがあります。 schema.xmlのサンプルより抜粋 …

CJKTokenizerFactory と NGramTokenizerFactory の動作の違い

祝 Lucene2.9.0 リリース!! 2009/9/25 に Lucene2.9 がようやく正式リリースされました。 便乗して久しぶりの Solr ネタです。 この記事は Lucene2.9.0 がバンドルされている 2009/09/28版の Solr をもとに書いています。 http://people.apache.org/builds/l…

Excel から CSV に変換したデータを CSVLoader を使って Solr に入れたいのだけれど、データがないカラムのカンマが省略されちゃっててエラーになる場合の対処法

Solr に入れるデータが数万件程度の場合には Excel でデータが用意されることもあると思います。 この場合には Excel から CSV に吐き出して CSVLoader でインポートするのが便利でラクチンです。 ところが Excel は行の最後のカラムに値が入ってなかったり…

commit と rollback

Solr ではデータの更新を行った後に commit を実行することで更新が反映されます。 「あー、やっぱり今のなし。なし。」って感じで更新をなかったことにするのは rollback です。 この辺は RDBMS でもよく使われるコマンドですね。 rollback は Solr1.4から…

Nutch と Solr の連携 その2 〜 Nutch のインデックスを Solr で再インデックスする 〜

前回 Nutch の Lucene 形式のインデックスを Solr から覗いてみました。 中身を覗いてみることはできたものの以下の課題もでました。 host や site、contentといったデータが表示されない。 日本語で検索できない。 この辺の対応には Nutch のデータを使って…

Nutch と Solr の連携 その1 〜 Nutch のインデックスを Solr からのぞいてみる 〜

Nutch はクロールしたデータの管理に Lucene 形式 のインデックスを使っています。 このため Lucene を使って Nutch のインデックスにアクセスしたり、Solr を使って検索することができます。 ちなみに3者の関係を整理するとこんな感じです。 Nutch : Webク…

マルチコア (Multi core) ってすっげー便利で実は簡単

マルチコアは一つの Solr で複数のインデックスをコントロールするための技術です。 インデックス毎にそれらをハンドリングする SolrCore(以下コア) と呼ばれるインスタンスを並行して実行することでそれを実現しています。マルチコアはバージョン1.3 から導…

Linux で root 権限なしでも Solr を Tomcatの上で動かす1つのやりかた

Solr はサーブレットとして実装されているので、実行するにはサーブレットコンテナが必要になります。 Solr には Jetty というサーブレットコンテナがバンドルされているのでその上で動かすこともできるのですが、Tomcat の方が機能的にすぐれていたり、Nutc…

Solrにデータを入れてみる。レッツ インデキシング!

Solrにデータを入れてみます。Solr 等の検索エンジンではデータを入れることインデキシングするというようです。早速インデキシングしてみましょう。 Solr の起動 まずはSolrを起動します。インストールは [Solr] Solr1.4 インストール手順 ( Linux にコマン…

Solr1.4 インストール手順 ( Linux にコマンド4回だけでインストール完了)

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…

ヒット件数が数十万件を超えるような場合でも使える。新しくインデキシングしたドキュメントを検索結果の上位に表示する2つの方法。

新しくインデキシングされたドキュメントを検索結果の上位に表示したいというニーズは割とよくあると思います。 フレッシュネスブーストと呼ばれる手法です。 Solr の場合 TIMESTAMP などの日付でソートすることもできるのですが Solr はソートがあまり上手…

日本語形態素解析器Senを導入する その6 Nグラムと形態素解析には一長一短あり。目的に応じて使い分けよう

詳細は下を参考にしていただきたいのですが Nグラムは再現率が高いものの精度は低くなりがちです。 逆に形態素解析は再現率は低いものの精度は高くなります。 [Solr][Sen] 日本語形態素解析器Senを導入する その4 再現率が高いNグラム [Solr][Sen] 日本語形…

日本語形態素解析器Senを導入する その5 精度なら形態素解析

Nグラムと形態素解析の比較の2回目です。 再現率が高いのがわかっているならNグラムを選択すればいいように思えるのですが、 Nグラムには再現率が高い故に精度が落ちるという問題があります。 まずは、この手の話をするときによく出てくる「京都•東京都」問…

日本語形態素解析器Senを導入する その4 再現率が高いNグラム

今回と次回の記事で形態素解析とNグラムの違いをみていきたいと思います。 結論から言うとNグラムの方が再現率が高く、検索語が含まれる文章を確実に拾い上げることができます。 逆に形態素解析の方は、解析ミスによって取りこぼすことがあります。 形態素解…

日本語形態素解析器Senを導入する その2 lucene-jaのインストール

lucene-ja とは lucene-ja は Sen のラッパーとして Solr に日本語形態素解析機能を提供します。 大雑把に言うと検索エンジン Solr と 日本語形態素解析器 Sen をつなぎ合わせる役割です。Solrから形態素解析器によってトークナイズされた単語で、検索できる…

日本語形態素解析器Senを導入する その3 インデキシングする

形態素解析用フィールドをスキーマに追加してインデキシングしてみます。 今回はNグラムと形態素解析の違いを確認するために、全く同じ文章をNグラムと形態素解析で2重にインデキシングしてみます。 インデキシング対象のデータはNグラムのときとと同様のブ…

日本語形態素解析器Senを導入する その1 Senのインストール

Senとは Sen はJAVAで書かれた日本語形態素解析器です。 辞書を使って日本語の文章をトークナイズします。下は「Sen はJAVAで書かれた日本語形態素解析器です」をSenでトークナイズした例です。 Solrに組み込むことで、日本語文章を意味のある単語単位にトー…

ver1.3ついにデビュー

本日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って? Solrはオープンソースの検索エンジンです。 JAVAで記述されていてサーブレットとして実装されています。TomcatやJettyなどのサーブレットコンテナの上で動きます。 Apacheプロジェクトで開発が進められています。 http://lucene.apache.org/solr/…

Solr CJKAnalyzerで日本語文章の検索をする その4 CSVファイルで楽々インデキシング

ついにCJKAnalyzerを使って Solrに日本語ドキュメントをインデキシングするときが来ました。 ココまでくるとデータをPOSTするだけなのですが ただPOSTするだけだとつまらないのでCSVファイルをPOSTする方法を紹介します。 Solrにインデキシングするには XML…