4

私は 400,000 を超えるアイテムを持つ Web サイトを持っています。似ているものもあれば、大きく異なるものもあります。これらのアイテムを可能な限り最良の方法で検索する方法を提供したいと考えています。Web サイトが配信された後、全文索引を使用していました。解決策はせいぜい基本的なものであり、最悪の場合はひどく不適切です。

では、これらのアイテムを検索する最良の方法は何ですか? それらは SQL Server データベース (2005) に格納されます。私たちのウェブサイトは C# 2.0 で設計されています。

現在、ここにプロセスがあります:

  1. ユーザーがテキスト ボックスに値を入力します。
  2. このエントリを「クリーン」にします。ハッキングの試みである可能性のある「怖い」文字を削除します。キーワードを削除する (and、or など)
  3. 値をストアド プロシージャに渡して結果を返します。
  4. 結果を返します。
4

5 に答える 5

7

Lucene.NETを見てください。これは、SQL Server の全文検索に比べて大幅に改善されていると思います。

于 2009-01-16T14:20:31.277 に答える
2

SQL Server Central には、SQL Server を使用した Google のような全文検索の作成に関するすばらしい記事があります。残念ながら、記事全体を表示するには登録する必要がありますが、登録は無料で、多くの有益な情報が掲載されています。リンクは次のとおりです。

http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/

抜粋:

...

Google スタイル

アプリケーションを成功させる鍵は、使いやすく強力にすることです。Google は、Web 検索エンジンでこれを実現しました。クエリの構文はシンプルで直感的ですが、フル機能を備えています。Google クエリの基本的な構成要素はシンプルですが、強力な方法で組み合わせることができます。基本的な Google クエリ構文から始めて、いくつかの演算子を追加して、SQL Server CONTAINS 述語構文の機能を活用します。完全な Google 構文は、 http://www.google.com/help/cheatsheet.htmlの Google Help:Cheat Sheet で定義されてい ます。

...

この記事には、完全なサンプル コードと、それをダウンロードするためのリンクも含まれています。実装する予定がない場合でも、興味深い読み物です。

于 2009-01-16T14:30:28.107 に答える
1

Lucene.net を見ると、検索クエリのデータベースへの呼び出しが最小限に抑えられます。

http://incubator.apache.org/lucene.net/からフォロー

Lucene.Net は、Microsoft .NET Framework を利用する C# および .NET プラットフォームへの Java Lucene 検索エンジンのソース コード、クラス単位、API 単位、およびアルゴリズム ポートです。

Lucene.Net は、Lucene の元の Java 実装で使用された API とクラスに固執します。API 名とクラス名は、Lucene.Net に C# 言語と .NET Framework のルック アンド フィールを与える目的で保持されています。たとえば、Java 実装の Hits.length() メソッドは、C# ポートで Hits.Length() を読み取るようになりました。

C# への API とクラスの移植に加えて、Java Lucene のアルゴリズムが C# Lucene に移植されています。つまり、Java Lucene で作成されたインデックスは、C# Lucene と相互に互換性があります。読み取り、書き込み、更新の両方で。実際、Lucene インデックスは、Java Lucene および C# Lucene プロセスを使用して同時に検索および更新できます。

于 2009-01-16T14:23:07.933 に答える
1

Google サイト検索を使用して、検索結果を提供できます。必要に応じて結果を表示する柔軟性が常に得られるとは限りませんが、多くの場合は十分です。

于 2009-01-16T14:47:52.643 に答える
0

2番目のステップは非常に物議を醸しています.「怖い」と思う言葉は何ですか? SQL サーバー組み込みの全文検索を使用する場合、入力クエリからキーワードを手動で削除する代わりに、SQL サーバー内でノーズ/ストップ ワードのリストを設定できます。

ここで、StackOverflow だけでなく、検索機能を提供する他のサイトでも確認したい機能の 1 つを次に示します。

  • ドキュメントのいくつかのフィールドに優先度(重み)を与えます(stackoverflowの場合-検索はトピックタイトルを優先する必要があります)

また、 LuceneSphinxなどの FTS 用のサードパーティ ソリューションを使用することも検討してください。組み込み機能よりもはるかに優れたユーザー エクスペリエンスを提供できます。サード パーティの FTS コンポーネントの利点としては、データベースの負荷が軽減される、検索結果の関連性が向上する、インデックス作成速度が向上する、データベースのサイズが小さくなるなどがあります。

于 2009-01-16T14:22:17.750 に答える