2012-02-13 6 views
0

Lucene文書用のタグリストを、あらかじめ決められたリストに基づいて作成したいと思います。リストから文書内にキーワードが存在することを確認

だから、我々はLuceneの

の経験を持つJavaプログラマを探していたテキスト

との文書を持っている場合、我々は、キーワードリスト(約1000品目)

のjavaを持っています、php、lucene、c#[...]

キーワードJavaとLuceneがドキュメントに存在することを確認したいと思います。 java OR php OR luceneを実行するだけでうまくいきません。その理由は、どのキーワードがヒットを生成したのかわからないからです。

Luceneでこれを実装する方法に関する提案はありますか?

答えて

1

はい、これはあなたがフィールドのためのあなたの休止状態の検索注釈でTermVector.YESとインデックスにフィールドを覚えておく必要があり

FullTextSession fts = Search.getFullTextSession(getSessionFactory().getCurrentSession()); 

Query q = fts.getSearchFactory().buildQueryBuilder() 
    .forEntity(Offer.class).get() 
    .keyword() 
    .onField("id") 
    .matching(myId) 
    .createQuery(); 
Object[] dId = (Object[]) fts.createFullTextQuery(q, Offer.class) 
    .setProjection(ProjectionConstants.DOCUMENT_ID) 
    .uniqueResult(); 

if(dId != null){ 

    IndexReader indexReader = fts.getSearchFactory().getIndexReaderAccessor().open(Offer.class); 

    TermFreqVector freq = indexReader.getTermFreqVector((Integer) dId[0], "description"); 

} 

に動作します。

1

あなたは1つ以上のインデックスフィールドを持っており、キーワードとインデックスされた用語の交差点に基づいてタグクラウドを構築するとします。

同じアイデアは、あなたができるいずれかの適用ように、あなたの問題は、ハイライト表示に非常によく似ている:あなたの文書への高速アクセスのための

  • あなたのLuceneドキュメントの保存されたフィールドを再分析し、
  • 使用term vectorsを'フィールドを格納します。

用語ベクトルを使用する場合は、コンパイル時に有効にする必要があります(Field.TermVector.YES documentationおよびField constructorを参照)。

+0

TermVectorsがこちらのチケットになる可能性があります。私はHibernate Searchを使用していますので、このコンテキストでこの機能を使用できるかどうかを見ていきます – Marc

関連する問題