5

私のプロジェクトは、質問と回答 (stackoverflow スタイル) に基づいています。

ユーザーが以前に尋ねられた質問を検索できるようにする必要があります。

質問表は次のようになります。

Questions
-------------------------------------------------
id                 questions
-------------------------------------------------
1                  How to cook pasta?
2                  How to Drive a car?
3                  When did Napoleon die?

検索するものを書くときは、次のように書きます。

When did Brazil win the world cup?

このStringをスペースで分割して、 Strings の配列にするとします。

これらの文字列を含むすべての質問を取得し、各単語の大文字と小文字を無視し、あまり言及されていない単語で結果を並べ替えるのに最適なSELECT SQL クエリは何ですか?

When, and,will, how , etc..を含む質問は非常に多くありますが、ブラジルを含む質問はそれほど多くないため、ブラジルはキーワードのようになります。

SQL Server 2008 を使用しています。

4

3 に答える 3

6

生の SQL でこれを行うのは本当に望ましくありません。

データベースの全文検索オプションを調べることをお勧めします。ここから始めるのがよいでしょう。

于 2013-01-16T13:05:07.037 に答える
1

mysql ではフルテキスト インデックスとこれを可能にする match() 選択関数があり、SQL Server では関数 Contains() を使用する必要があります 。 /ms142571.aspx

于 2013-01-16T13:06:12.510 に答える
0

あなたの選択肢は最良のものではありません。オープン ソースの Apache Solr プロジェクトを見てみましょう。http://lucene.apache.org/solr/

Solr は、REST に似た API を備えたスタンドアロンのエンタープライズ検索サーバーです。XML、JSON、CSV、または HTTP 経由のバイナリを介してドキュメントをそこに配置します (「インデックス作成」と呼ばれます)。HTTP GET 経由でクエリを実行し、XML、JSON、CSV、またはバイナリの結果を受け取ります。

  • 大量の Web 用に最適化された高度な全文検索機能
  • トラフィック標準ベースのオープン インターフェイス - XML、JSON、および HTTP
  • 包括的な HTML 管理インターフェイス サーバー統計
  • モニタリングのために JMX 経由で公開 直線的にスケーラブルな自動インデックス
  • レプリケーション、自動フェイルオーバー、リカバリ ほぼリアルタイムのインデックス作成
  • XML 構成で柔軟かつ適応可能 拡張可能なプラグイン アーキテクチャ

詳細機能と特にクエリセクションを見てください。アプリに必要なものはすべて揃っています。

于 2013-01-16T15:57:53.193 に答える