2011-11-09 3 views
1

MSSQLデータベースにインデックスされたテキストを検索するアプリケーションがあります。私の現在の検索機能は正常に動作します。検索結果を(Googleのように)検索用語の周囲のテキストと一緒に表示するだけで済みます。私がこれを行うために見つけることができる唯一のツールはLuceneのテキストハイライトです。私はこの質問からそれについて読む:Displaying sample text from the Lucene Search Results。私は非常に長い間Luceneを調べていませんが、検索ヒットごとにドキュメントを作成する必要があると思います。Luceneをハイライト用に使うべきですか?

私がやりたいことがLuceneでも可能かどうか、そして私の目的のためにこのようなツールを使うことは過度なのかどうか疑問に思っていました。これに使用できる/使用すべき他のツールはありますか?

答えて

2

強調表示しようとしているテキストのサイズによって異なりますが、それがやや小さい場合は、検索バックエンドの上にLuceneのハイライト機能を使用することができます。詳細については、Highlighterのマニュアルを参照してください。

これでは十分ではない場合があります(たとえば、大量のチャンクを強調表示したい場合など)、Luceneはterm vectorsを使用してハイライト表示を高速化できますが、これはバックエンドをMSSQLからLucene 。

+0

ありがとう、これらを確認します。 – Zip184

1

これは残虐である&:Luceneは、ステミング、スコアリングなどの完全な検索/インデックスエンジンです。おそらくよりもの方が良いでしょうが、それはあなたの目標によって異なります。

単純なキーワード強調表示を行う場合は、正規表現を使って強調表示タグを挿入することを検討してください。

1

あなたはがすでに見つかったキーワードのテキストを取り巻く取得することができ、これは本当にあなたがを必要とする唯一のものある場合は、[はい、Luceneのはやり過ぎです - ちょうどタグにを強調してキーワードを囲みます。しかし、ほとんどの場合、倍の

しかし、ほとんどのケースでは、人々が、そのようステミングなど、他の高度なオプション、(あなたは「ハイライト」を検索した場合、あなたはまた、「ハイライト表示」と「蛍光ペン」見つける。)のことを考え始める行きます同義語検索、言語の検出などもしあなたがそうしたことが必要かもしれないと思っていたり、キーワード(周囲のテキスト)を含むテキストスニペットを見つけるアルゴリズムを用意していない場合は、ワールドに潜入 world 。私が考えることができる最良の選択肢は、MSSQLからすべてのテキストフィールドを索引付けし、すべてのテキスト検索をLuceneに基づいて行うことです。

ハードなLuceneコーディングが怖い場合は、Solr - 非常に幅広い機能を備えたLuceneベースのWebサーバーをXMLファイルで簡単に構成できます。 SolrにはシンプルなWebと多数のプログラミングインターフェイス(Java用のSolrj)があります。

+0

このロジックを自分自身でコーディングする際の唯一の問題は、ContainsTableとFORMSOF(INFLECTIONAL、xxx)を使用してSQLインデックスクエリを実行していることです。単純に正規表現でキーワードを見つけるよりも高度です。私はハイライトのために検索を実行するために使用するのと同じロジックを本当に使用しているはずです。また、実際のサマリー文字列を作成する機能をコーディングする必要がないことを期待していました。私は本当にこれに時間をかけすぎることができないので、私のためにこれを行うためのAPIを探していたのです。 – Zip184

+0

だから、私はおそらくあなたがLuceneを必要としていると言ったのです.- FORMSOFはLuceneでのステミングとよく似ていますが、FORMSOFは強調表示をしません。 – ffriend

関連する問題