2011-11-10 9 views
0

私はLucene.netを使用して、Asp.netアプリケーションで全文検索機能を実装しています。検索結果ページは一致項目を強調表示する必要があります。私はLucene.Net.Search.Hitsのインスタンスを取得し、Lucene Documentを取得するために.Doc(int i)メソッドを使用しました。Lucence.netの検索結果で一致するアイテムの位置を取得できますか?

しかし、Luceneクラスの既存のメソッドやプロパティで一致するアイテムの位置を取得する方法がわかりません。 Lucene.netはハイライトクエリ文字列をサポートするための機能を提供していますか?

答えて

1

あなたは、以前の回答が言ったようにcontrib

0

で見つけることができHighlighterまたはFastVectorHighlighterは、あなたがのcon​​tribから蛍光ペンやFastVectorHighlighterのいずれかを使用する必要があります使用することができます。ここで

がハイライトされた断片を得るために蛍光ペンのlibを使用しての例です:

Formatter formatter = new SimpleHTMLFormatter("<span><b>", "</b></span>"); 
Lucene.Net.Highlight.Scorer scorer = new QueryScorer(query, field); 
Lucene.Net.Highlight.Encoder encoder = new SimpleHTMLEncoder(); 
var highlighter = new Highlighter(formatter, encoder, scorer); 
highlighter.SetTextFragmenter(new SimpleFragmenter(100)); 

string[] fragments = 
    highlighter.GetBestFragments(DefaultAnalyzer, field, doc.Get(field), 3); 

いくつかの蛍光マーカー関連の落とし穴:

  • フィールドを強調表示するには、それはField.Store.YESオプションでインデックスに追加する必要があります

  • 照会をハイライトに渡す前に書き直す必要があります

  • あなたは蛍光ペンに渡すアナライザを使用すると、フィールドを強調表示するには、 `索引付けに使用し、
+0

を検索同じである必要があり、それはField.Store.YESをインデックスに追加する必要がありますあなたがする必要はありませんoption'索引付けされた元の(テキスト)ファイルなどのextarnalソースを強調表示する予定の場合は、保管してください。 –

+0

@ L.B。それでも、ドキュメントフィールドのテキストをハイライトし、そのようなハイライターの必要条件を知らない場合は、問題があります。 – buru

関連する問題