関口宏司のLuceneブログ

OSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - |
Lucene 2.9.0のリリース・・・
Lucene 2.9.0のリリースは9月7日頃か
| 関口宏司 | Luceneリリース | 08:09 | comments(0) | trackbacks(0) |
Highlighter関連の変更(2.9)
FastVectorHighlighterという、名前からしていかにも速そうなHighlighterがLucene 2.9(9月上旬頃リリース予定)に含まれることになった。これは当初、Highlighter2という名前で開発されていたもので、コミット間際になって「名前がHighlighter2じゃまずいだろう」ということで、名称変更されたものである:

https://issues.apache.org/jira/browse/LUCENE-1522

以下のような特徴がある:
  • サイズの大きなドキュメントでも高速に動作する。ただし、TermVectorを使用するので、インデックスサイズは大きくなる。
  • N-gramトークナイザでも正しく動作する。
  • フレーズ単位のタグ付けが行われる(従来のHighlighterは単語単位のタグ付け)。
  • 多色タグが使える。
  • TermQuery、PhraseQueryおよびそれらのBooleanQueryの組み合わせの単純なQueryのみサポート(HighlighterはWildcardQueryやSapnQueryを含むほぼ全てのLuceneクエリをサポート)。
どのくらい高速かというと、contrib/benchmarkにあるHighlighterとFastVectorHighlighterを比較するalgファイルhighlight-vs-vector-highlight.algを使って計測すると、elapsedSecにしておよそ2.5倍高速である。テストデータにはWikipediaを使用しているので、もっとサイズが大きなファイルであれば、この差はもっと広がると考えられる。




従来のHighlighterの方では、単語単位のハイライトからフレーズ単位のハイライト(紛らわしいが、フレーズ単位のタグ付け、ではない)にデフォルト動作が変更になるという次のJIRAがコミットされている:

https://issues.apache.org/jira/browse/LUCENE-1685

これによると、従来のHighlighterは次のように変更になった:
  • これまでの単語単位のScorerであるQueryScorerはTermQueryScorerへと名称変更。
  • これまでのフレーズ単位のScorerであるSpanScorerはQueryScorerへと名称変更。
上記の変更により、デフォルトのScorerであるQueryScorerを使うことにより、フレーズ単位のハイライトがデフォルトになるようになった。
| 関口宏司 | Luceneクラス解説 | 09:13 | comments(0) | trackbacks(0) |
高速String.intern()(2.9)
Luceneライブラリで活用されているString.intern()の高速化APIが追加された:

https://issues.apache.org/jira/browse/LUCENE-1607

これは、intern()されたStringのキャッシュに対し、参照時はロックしないようにして高速化を図るものである。したがって、intern()される文字列が同じものが多い場合に効果的である。そうでない場合は、初めてintern()される文字列はString.intern()が呼ばれるためかえって遅くなる。Solrにも早速Lucene版のintern()を使うように更新が行われた:

https://issues.apache.org/jira/browse/SOLR-1338
| 関口宏司 | Luceneクラス解説 | 13:49 | comments(0) | trackbacks(0) |
(メモ)YouSeer
WebクローラーにHeritrixを、検索エンジンにSolrを使ったOSS検索エンジン・フレームワーク:

http://youseer.sourceforge.net/
| 関口宏司 | Solr | 08:05 | comments(0) | trackbacks(0) |
autocommitの設定値でインデクシング時間に大きな差
contrib/benchmarkを使って2.4と2.9のインデックス作成時間を比較していたMark Miller氏は、2.9で大幅な速度向上を発見。2.9は3分少々の処理時間のところ、2.4は20分以上もかかっている。原因を追及していくと、Lucene 2.4と2.9のautocommitのデフォルト設定値の違いであることが判明した。

2.9はautocommit=falseがデフォルトであり、2.4はtrueである。2.4でもfalseにすると、2.9と近いプロファイルを示し、処理時間も4分程度に縮まった:

http://www.nabble.com/benchmark%3A-lucene24-vs-lucene29-td24835195.html
| 関口宏司 | Luceneパフォーマンス | 08:38 | comments(0) | trackbacks(0) |
ComplexPhraseQueryParser (2.9)
Lucene 2.9にフレーズ内のワイルドカード検索やあいまい検索を可能にするクエリパーサ、ComplexPhraseQueryParserが追加された。



サンプルコード:
public class TestLucene1486 {
  public static void main(String[] args) throws Exception {
    QueryParser parser = new ComplexPhraseQueryParser( "f", new WhitespaceAnalyzer() );
    printQuery( parser, "¥"j*   smyth~¥"" );
    printQuery( parser, "¥"(jo* -john)  smith¥"" );
    printQuery( parser, "¥"jo*  smith¥"~2" );
  }
  
  static void printQuery( QueryParser parser, String query ) throws Exception {
    Query q = parser.parse( query );
    System.out.println( query + " = " + q.toString() );
  }
}



実行結果を見てもなにがなんだかわからないので、println()の行でブレークポイントを置き、Queryオブジェクトがどうなっているかを見るとよい。

https://issues.apache.org/jira/browse/LUCENE-1486
| 関口宏司 | Luceneクラス解説 | 21:22 | comments(0) | trackbacks(0) |
+ Solrによるブログ内検索
+ PROFILE
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<< August 2009 >>
+ LINKS
検索エンジン製品 - 比較のポイント
商用検索エンジンを購入した企業担当者は読まないでください。ショックを受けますから・・・
>>製品比較 10のポイント
+ Lucene&Solrデモ
+ ThinkIT記事
+ RECOMMEND
Apache Solr入門 ―オープンソース全文検索エンジン
Apache Solr入門 ―オープンソース全文検索エンジン (JUGEMレビュー »)
関口 宏司,三部 靖夫,武田 光平,中野 猛,大谷 純
+ RECOMMEND
Lucene in Action
Lucene in Action (JUGEMレビュー »)
Erik Hatcher,Otis Gospodnetic,Mike McCandless
FastVectorHighlighterについて解説記事を寄稿しました。
+ RECOMMEND
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ MOBILE
qrcode
+ SPONSORED LINKS