2017.12.15 Friday
スポンサーサイト
一定期間更新がないため広告を表示しています
| スポンサードリンク | - | | - | - |
関口宏司のLuceneブログOSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
2008.07.27 Sunday
柔軟なインデックス構造を目指して進化するLucene
先日、ドキュメントをセグメントファイルに書き出すクラスであるDocumentsWriterのリファクタリングをしよう、というチケットがコミットされた。インデックスへの書き込みのプロセスをよりモジュール化して、将来の新しいインデクシング関連の機能追加はプラグインの追加で対応できるようにしよう、というのが狙いである:
https://issues.apache.org/jira/browse/LUCENE-1301 これはまた、フレキシブルインデクシングと呼ばれる新機能に対応するための第一歩でもある。 現在、Luceneのインデックスファイルの構造は公開されているとおり、固定的なものである(それでもTermVectorやPayloadのオプションがON/OFFできたり、Field値の文字列の登録をON/OFFできたり、圧縮する/しないを選択することができたり、FieldのlengthNormをON/OFFできたりと、他の多くのOSS検索エンジンよりも相当に柔軟ではある)。 これを将来はpositionやfrequencyを省略したり、逆にpositionに対して付加情報を追加できるようにしたり、圧縮アルゴリズムを自由に選択できるようにしたり・・・という具合にインデックスへの登録内容の自由度をさらに高められるようにする。 アプリケーションの要件によって、インデックスに文書の関連情報を登録するのにも使えるほか、余分な情報を登録しないことでインデクシングや検索の性能向上にも貢献すると考えられる。 たとえば早速、term frequency情報を省略できるようにする、というパッチが提案されている: https://issues.apache.org/jira/browse/LUCENE-1340 frequencyを省略すればスコアにも影響が出るだろうが、スコアによる順位よりもフィールド値によるソートを多用するアプリケーションであれば気にならない。またフィールド単位でfrequency情報を省略するかどうか選べるので、frequencyがそもそも不要なフィルタ系のフィールド(県名や性別、ユーザ権限など)であればこれを導入するメリットは大きい。そのようなフィールドでfrequency情報の登録を行わないようにすれば、インデクシング時間を短くしたり、ディスクI/Oが減ることで検索性能を向上させたり、メモリ消費量を少なくしたり、ディスク消費量を減らせたり・・・と、少し考えただけでも相当な効果が望めるものである。 2008.07.22 Tuesday
いよいよSolr 1.3リリースか?!
いよいよSolr 1.3のリリースが行われそうな雰囲気だ。
また、新しいSolrロゴにしようと、投票も行われている: http://people.apache.org/~shalin/poll.html 2008.07.18 Friday
HotSpot Compilerのバグ、Java 1.6.0_10で改修予定
先日お知らせしたJava 1.6.0_04以上で発生する不具合だが、OpenJDK上ですでに改修されており、Java 1.6.0_10に反映されるようだ。
2008.07.17 Thursday
論理演算とBooleanQuery(初心者向き)
次のような賃貸アパートの物件情報がインデックスに登録されているとする:
なお、Field名は物件名がname、駅徒歩(分)がtoho、家賃(万円)がfeeとする。また、tohoとfeeの各数値フィールドは2桁の文字列で登録されていることとする。なお、数値が1桁の場合は頭に"0"をつけて2桁とする(これは以下で範囲検索をするときに必要な桁あわせである)。 ここで「駅徒歩3分以内」という条件と「家賃10万円以下」という条件にそれぞれの物件が当てはまるかどうかでベン図を描くと次のようになる: これらの条件のいろいろな論理演算をBooleanQueryで表現し、得られたQueryを使ってSearcherのsearch()メソッドを呼び出すと、検索結果は(あたりまえながら)論理演算の解と同じになる。 以下に条件に沿ったBooleanQueryの組み立て方を示そう。 まず「駅徒歩3分以内」という条件と「家賃10万円以下」という条件のQueryオブジェクトを作成しておく:
上記のように、それぞれの条件はConstantScoreRangeQueryクラスを使って作成する。 これらのQueryオブジェクトをそのまま使えば、それぞれの条件に合致した物件が検索結果となる(以下検索結果はコメントで示す):
次に、BooleanQueryを用いてANDやORを実行してみよう。すると、次のようになる:
さらには、こんな検索が実際に行われるのかどうかは疑問だが、XOR、NOR、NANDなんかも可能である:
最初のベン図と各コードのBooleanQueryを見比べながら読んでみるといいだろう。 2008.07.16 Wednesday
Java 1.6.0_04以上で発生するエラー
さて、先日の週末はパソコンの復旧でつぶれた私だが、容量アップしたハードディスク(60GBから120GB)にいろいろソフトをインストールして現在は復活している。インストールしたソフトは特に理由がなければそのときの最新バージョンを入れた。Javaは1.6.0_07に上がったので、LUCENE-1282で騒がれた不具合が再現するか試してみた。
この不具合はJavaのHotSpot Compilerのものとみられており、SunのBug Databaseにファイルされている: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6707044 上記URLには再現させるための簡単なプログラムが掲載されている。私の環境(Windows Vista)で実行してみると、確かに再現した(起こるはずのないRuntimeExceptionが発生する):
ただし、上記URLに掲載されているプログラムそのままでは私の環境では起こらず、LUCENE-1282にあるとおり、docNumを1000000に、jを300000に変更すると発生した。 上記バグは当初はSunによりプライオリティがLowでファイルされていたが、現在は88票もの投票を受け、プライオリティがHighに変更されている。 LUCENE-1282 https://issues.apache.org/jira/browse/LUCENE-1282 2008.07.15 Tuesday
インデクシング中にフラッシュされるドキュメント数を知るには?
IndexWriterを使ってメモリ中にDocumentをaddしているとき、次のcommit()時にいくつDocumentがフラッシュされるのかを知りたいことがある。そんなときは、numRamDocs()メソッドを使うとよい。
サンプルプログラムを次に示す:
IndexWriterをRAMDirectoryに対して使用している場合でも同じように使うことができる(numRamDocs()というメソッド名から混乱しやすいので念のため記す)。 2008.07.14 Monday
Solrでの検索タイムアウトのサポートとその効用
Lucene 2.4では検索のタイムアウトがサポートされるが、Solr 1.3でもサポートされることとなった。
検索エンジン・サーバ側に検索処理時間のタイムアウトを設けるのは、検索クライアント側でタイムアウトを設定するのと比較し、次のようなメリットがあると考えられる:
2008.07.12 Saturday
今度はハードディスクが・・・
昨日、客先に置き忘れたACアダプターが無事に戻ってきたが、今度は、今朝ノートPC(Let's Note)の電源を入れたら起動しなくなっていた。
黒地の画面に白字の英語で「Windows Boot Manager」。初めて見る画面で、全然起動しないのでPanasonicに電話した。そこのサポートセンターでは「こちらではわからないので」ということで折り返しの電話を待つこと2時間。サポートの人に電話で症状を説明し、再起動をしたり[F2]キーを押したり、[F8]キーを押したり色々やって分かったことは「無理です」とのこと。 あとは内蔵ハードディスクを取り出して、外部ハードディスクとしてデータ類をバックアップするしかなさそうだ。 これから秋葉原に行ってきます。。。 2008.07.11 Friday
Yahoo!オークションのデモが
うちのデモマシンがなんか重いと思ったら、Erik HatcherさんがSolr MLでFlareのデモを紹介していた:
http://www.nabble.com/Re%3A-Solr-1.3-release-date-p18400443.html 2008.07.11 Friday
(メモ) solr-ruby, acts_as_solr, and Flare レシピ
Erik Hatcherさんのプレゼン資料によると、書籍「Advanced Rails Recipes」にはsolr-ruby, acts_as_solr, Flareのレシピが掲載されているらしい。
solr-ruby - by Erik Hatcher http://code4lib.org/files/solr-ruby.pdf Advanced Rails Recipes http://www.pragprog.com/titles/fr_arr/advanced-rails-recipes |
+ 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 |