2017.12.15 Friday
スポンサーサイト
一定期間更新がないため広告を表示しています
| スポンサードリンク | - | | - | - |
関口宏司のLuceneブログOSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
2007.10.31 Wednesday
Luceneでベイズ分類(experimental)
Luceneのインデックスをベイズ分類に応用しようという実験的なパッチが提案されている:
LUCENE-1039 こちらの理論には素人なのでアルゴリズムは軽くスルーして、プログラムと実行結果を示す。 これを使えば、文章を学習させたLuceneインデックスを使って、別の新しい文章の分類ができる。 たとえば、こんな具合に「関西弁」と「標準語」を自動分類してくれる:
完璧では当然ないので、次のように間違うこともある(2番目は「政治」ではなく「芸能」と分類して欲しい):
ただ、学習の量が足りないだけなのかもしれない。 プログラムは次のとおりである:
なかなか楽しいプログラムなので、試したい人がいるかもしれない。そこで、LUCENE-1039のパッチの当て方とビルドの方法を簡単に説明しよう。 <1> パッチは大抵の場合、その時点の最新trunkのソースに合わせて提出されるため、trunkのソースをSVNから取得する:
これ以降、上記のオペレーションでできたtrunkディレクトリを$LUCENE_HOMEとする。 <2> LUCENE-1039からパッチファイルLUCENE-1039.txtをダウンロードして$LUCENE_HOMEに置き、次のようにパッチを当てる:
<3> LUCENE-1039のパッチがJava 5.0前提になっているので、次のbuild.propertiesを作成して$LUCENE_HOMEに配置する:
<4> Lucene本体をビルドする:
<5> contribのAnalyzerをビルドする:
<6> contribのclassifierをビルドする。今回のパッチにはbuild.xmlが含まれないので、contrib/analyzers/build.xmlをコピーして次のように編集してcontrib/classifier/build.xmlとする:
そしてclassifierをビルドする:
以上のビルドで$LUCENE_HOME/build/以下にできた3つのJARファイルを使って前述のプログラムをコンパイル、実行できる。 2007.10.24 Wednesday
ホワイトペーパー「10分で簡単!RailsとSolrの全文検索デモ構築」
前回はRails+Solrの全文検索のデモについて書いた。
Railsアプリというとその構築の容易さをアピールする「10分で作る〜」というビデオを撮って公開することがはやっているようだ。そのうちに「10分で作るRailsアプリ」大会とかできるのではないか。TVチャンピオンでやればいいのに。 今回のデモはどのくらいでできたかというと、FlareというSolrのクライアントを使ってまあだいたい10分くらいでできたように思う。もっとも、Yahoo!オークションの200万件の商品データをクロールするのに数週間はかかっているし、データの登録にも20時間くらいかかっている。そういった時間を除けばRailsをいじっていた時間は正味10分くらいだったろう。自分にもビデオを撮る技術と時間があれば作って公開したいところだが、できないので、代わりに「ホワイトペーパー」を作成した。 10分で簡単!RailsとSolrの全文検索デモ構築 http://www.rondhuit.com/download.html このホワイトペーパーでは、Flareに付属のデモデータを使ってRails+Solrの全文検索のデモ環境を作る方法が書かれている。 フロントアプリをRailsで組み、バックにSolr検索サーバを配置するのは現時点でかなり強力なWebアプリの構築ソリューションのように思うのだが、どうだろう。 2007.10.19 Friday
RailsアプリからSolrを使う全文検索のデモ
RailsアプリケーションからSolrを使う全文検索のデモを作成したので公開する。
http://www.rondhuit-demo.com/yademo/ デモシステムの全体構成は、次のようになっている。 デモシステムは、「フロントアプリサーバ」と「検索エンジンサーバ」の2つのサーバプロセスからなる。 「検索エンジンサーバ」はTomcatの上にSolrをデプロイして構成している。「フロントアプリサーバ」にはRailsで作られたアプリケーションが載っており、これがバックエンドの「検索エンジンサーバ」に検索のリクエストを送っている。そしてSolrから返ってきた検索結果をHTMLにしてブラウザに戻している。 上図の「フロントアプリサーバ」にはRailsという記述がないが、Flareと書いてあるのがRailsで構築されたSolrクライアントアプリケーションだ。このFlareがsolr-rubyを使ってSolrとの検索リクエスト/レスポンスの処理を行っている。 デモデータには「Yahoo!オークション」の商品データ約201万件を使用している。このデモデータはYahoo!のWebサービスAPIを使用して2007年7月から9月頃にかけてクロールして収集したものである。 検索の結果表示される商品説明はクロールしたHTMLをそのまま表示しているため、検索結果画面が多少乱れたり、画像抜けが起こったりする部分がある。また、本デモにはYahoo!オークションとしての機能は一切なく、単なる全文検索システムのデモであることをあらかじめお断りしておく。 このデモの使い方や特徴を以下で簡単に述べる。 検索キーワードサジェスチョン Flareのセールスポイントの一つが「検索キーワードのサジェスチョン」機能である。これはGoogle Suggestなどでおなじみのものだ。 「検索キーワードのサジェスチョン」は検索キーワードの最初の数文字を入力すると、ユーザが検索ボタンをクリックする前にシステムがバックグラウンドで検索を行い、検索ヒット数と共に検索キーワードの候補をユーザに提示してくれるものだ。 ユーザにとって「タイプ量が節約できる」「他人の検索キーワードからヒントが得られる」「検索ボタンをクリックする前にどのくらい絞り込めるのかがわかる」など、多くのメリットがあるのがこの機能の特徴である。Flareはこれを最初から提供している。しかもRailsプログラマの期待を裏切ることなく、簡単な「規約」にしたがうだけでこの強力な機能がUIについてくるので製作側にとってもメリットが大きい。 Flareのサジェスチョン機能はGoogleと異なり、あくまでもLuceneのインデックスを使ってサジェスチョンしているので、サジェスチョンの単位が「語」にとどまっている。また、その仕組み上から背後では膨大な計算が行われており、ドキュメント数やユーザ数が多い場合に応答速度の点で若干難がある。さらに上図のようにカタカナ1文字で「ソ」と入力する場面は(ローマ字変換入力の場合)日本語ではあまりないと考えられるので、日本語での利用を考えたときには別の仕組みが必要である。したがって、Flareの「検索キーワードのサジェスチョン」は使えるアプリケーションかどうかをよく考えて導入するのがよいだろう。なお、これらの問題点を解消した「検索キーワードのサジェスチョン」を弊社で開発中である。 絞り込み検索 FlareのデフォルトのUIでは、画面右側に自動的に絞り込み検索用のリンクが作成・表示される。Yahoo!オークションの商品データを使用したこのデモでは、Yahoo!オークションのカテゴリ(category)と出品者(seller_id)の上位20位までが表示されている。 絞り込み検索では、リンクをクリックするだけで簡単に検索結果を絞り込むことができるようになっているため、ユーザからの人気が高い機能の一つである。この機能もFlareの簡単な「規約」にしたがうだけで使うことができる。 検索条件の保存 Flareでは検索窓に入力した検索キーワードと、絞り込み検索でクリックしたリンクを「検索条件」としてCookieに保存している。その内容は画面左上のFlareのロゴ(このロゴ画像はいくつかあるベータ版のうちのひとつであり、将来変わる可能性がある)の下に表示されている。 検索のたびにこの条件は追加・保存されるので、新たな検索のときは[clear constraints]のリンクをクリックしてそれまでの検索条件を消去する。あるいは、各検索条件の右隣にある小さな[x]のアイコンをクリックして当該検索条件だけを削除することもできる。さらに、検索条件をクリックすると、検索条件をその場で変更して再検索もできる。 このUIはRailsプログラマにはおなじみのものだろう。 2007.10.07 Sunday
インデックスの診断・修復ツールの登場
Luceneインデックスの診断・修復ツールのパッチが公開された。
Basic tool for checking & repairing an index http://issues.apache.org/jira/browse/LUCENE-1020 使い方は次のように起動時の引数にインデックスのディレクトリ名を指定する:
上記はLucene 2.2インデックスに対する診断結果である。Lucene 2.3(現trunk)のインデックスに対して実行すると、次のようになる:
なお、上記はいずれもoptimizeされた1セグメントのインデックスに対する診断結果であり、複数のセグメントからなるインデックスの場合は出力はもっと長くなる。 診断結果でエラーが見つかったら、起動引数に"-fix"をつけて修復を試みることができる。修復実行には必ずあらかじめインデックスのバックアップを取り、自己責任で行うこと。 |
+ Solrによるブログ内検索
+ PROFILE
+ LINKS
+ Lucene&Solrデモ
+ ThinkIT記事
+ RECOMMEND
+ RECOMMEND
Lucene in Action (JUGEMレビュー »)
Erik Hatcher,Otis Gospodnetic,Mike McCandless FastVectorHighlighterについて解説記事を寄稿しました。
+ RECOMMEND
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ MOBILE
+ SPONSORED LINKS
|
(C) 2024 ブログ JUGEM Some Rights Reserved.
|
PAGE TOP |