2009年04月06日

java で全文検索 lucene の使い方?

このエントリーをはてなブックマークに追加
follow us in feedly
形態素解析するとなると全文検索ではない気がします。
形態素の区切りなどとは完全に関係なく字面だけから文字列を検索したいので
CJKAnalyzer を使います。

CJKAnalyzerクラス
CJKAnalyzerは文章が分かち書きされない言語である中国語、日本語および韓国語向けに開発されたbi-gramのAnalyzerであり、文字列を2文字ずつの単語に分割する。隣り合った単語は、1文字ずつ重なるようにして切り出される。たとえば、「わが弟です」は「わが」「が弟」「弟で」「です」となる。「東京都」は「東京」と「京都」に単語分割されてしまうので、「東京」だけでなく「京都」という検索語でも「東京都」を含むドキュメントがヒットしてしまうという弊害がある。また、「都」や「区」などの一文字の検索語はヒットしにくい。JapaneseAnalyzerより優位な点は、辞書を必要としないため流行語に強いこと、速度面でも優位なことが上げられる。

CJKAnalyzer の C J K は、Chinese,Japanese,Koreanのことですね。


インデックス作成側

String index = インデックスファイルを作るフォルダ
IndexWriter writer = new IndexWriter(index, new CJKAnalyzer(), true);

String path=検索対象ファイル

Document doc = new Document();
doc.add(new Field("path", path , Field.Store.YES, Field.Index.UN_TOKENIZED ) );
doc.add(new Field("contents", new FileReader( path)));
writer.addDocument(doc);
// 対象ファイルの分 この writer.addDocument を繰り返します

writer.optimize(); // インデックスの最適化 これが必要のようです。
writer.close();



検索側

String index = インデックスファイルがあるフォルダ
Analyzer analyzer = new CJKAnalyzer();
IndexReader reader = IndexReader.open(index );
IndexSearcher searcher = new IndexSearcher(reader);

QueryParser parser = new QueryParser("contents", analyzer);
String q= 検索クエリー
Query query = parser.parse( q );

Hits hits = searcher.search(query);

for (int i = 0; i < hits.length(); i++) {
Document doc = hits.doc(i);
String path = doc.get("path");
System.out.println( path );
// path に、検索クエリー q があるファイル名が返ります
// これで判明するのは 検索クエリーが出現したファイル名だけです。
}


検索クエリーの出現はこういう方法で取得したりします。
CJKAnalyzerを使って強調表示を行う





















昨年末にこういうメールがありました。


updatenews.sub.jp 様
ナレッジクリエーション
________と申します。

音声合成配信システム「vds」をご利用頂きましてありがとうございます。
さて、本日は、表題の通り貴社運営のサイト
(http://updatenews.sub.jp/jp.php)
を弊社vdsサイトにて利用例として掲載並びにリンクをさせて頂きたくメールし
た次第です。

vdsのご利用頂けるサイトとしては最も有効的なご利用方法の1つではと思って
おります。
弊社vdsに掲載は年内の予定としています。

是非ともご了承を頂きますようお願い申し上げますとともに、ご検討の程、何卒
よろしくお願い申し上げます。
今後ともよろしくお願い申し上げます。
以上

----------------------------------------------
株式会社ナレッジクリエーション
〒220-0011
神奈川県横浜市西区高島2-6-38 岩井本社ビル3階
Tel/Fax:045-307-9300 Mail:harada@knowlec.com
URL:http://www.knowlec.com/
----------------------------------------------



実は2008年中には掲載されなかったのですが、
いつの間にか掲載されていたようです。

利用事例::Web音声配信システム:vds




トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村
adsense
Archives
amazon
blogchart
QRコード
QRコード
Recent Comments
「最新トラックバック」は提供を終了しました。