関口宏司のLuceneブログ

OSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
<< BitSetからDocIdSetへの変更(2.4) | main | deleteDocuments(Query)メソッドのIndexWriterへの追加(2.4) >>
検索タイムアウトのサポート(2.4)
これもまた現trunkの話だが、検索実行時のタイムアウトが設定できるようになった。これにより、アプリケーションは検索の完了を待たずにユーザにタイムアウト時点までで得られた検索結果を返すことができる。レスポンスタイムに厳しい制限のあるアプリケーションには朗報かもしれない。

使う場合は、低レベルAPIのHitCollectorを使用して次のように行う:



IndexSearcher searcher = new IndexSearcher( INDEX );
TopDocCollector tdc = new TopDocCollector( 100 );
TimeLimitedCollector tlc = new TimeLimitedCollector( tdc, timeout );
try{
searcher.search( query, tlc );
}
catch( TimeExceededException e ){
System.out.println( e );
}
System.out.println( "numFounds = " + tdc.getTotalHits() );
searcher.close();



上記の赤字部分にミリ秒単位のタイムアウト時間を設定する。

たとえば、40ミリ秒のタイムアウト時間を設定してタイムアウトが起こったときは、次のようになる:



org.apache.lucene.search.TimeLimitedCollector$TimeExceededException: Elapsed time: 60Exceeded allowed search time: 40 ms.
numFounds = 23744



上記の実行例では実際は27,000件のヒット件数があるクエリを発行したが、途中までの23,744件が得られたことになる。

なお、デフォルトでタイムアウト計測の単位が20ミリ秒となっている。これを変更するには、setResolution()メソッドで行う(ただし、5ミリ秒未満は指定できない)。
| 関口宏司 | Luceneクラス解説 | 09:48 | comments(0) | trackbacks(0) |









http://lucene.jugem.jp/trackback/190
+ Solrによるブログ内検索
+ PROFILE
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< January 2019 >>
+ 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