私たちはクライアントのウェブサイトに取り組んでおり、簡単に再利用できる検索ソリューションを採用したいと考えています。どちらを追いかけるべきですか?Google Search API を使用する必要がありますか、それとも MS Sql Server Full Text Indexing と CONTAINS & FREETEXT 述語を使用する必要がありますか?
2 に答える
ここでは Stack Overflow で SQL Server のフルテキスト インデックス作成を使用していますが、これはかなりうまく機能します。2000 年にはさらに悪化していると聞きました。癖 (ストップワード リストなど) はありますが、深刻なものは何もありません。それは高速で、ほとんどの場合、ブリキに書かれていることを実行します。
あなたが直面している問題は、ユーザーが「ページ全体」レベル、ala Google で検索することを期待していることが多いことですcontains()
。そこでは、ページ/画面に書き込まれたものはすべて検索可能です。それは実際にはデータベースの仕組みではありませんが、ユーザーはそれを気にしません。彼らは結果に関心があり、何年にもわたる Web 検索に基づいた (おそらく妥当な) 期待を持っています。freetext()
「ページ全体」の検索レベルが必要になると思われる場合は、Google Search APIまたはLucene.NETを検討することを強くお勧めします (SQL の使用に基づく Microsoft スタックを想定しています)。
SQL Server の全文検索の良いところは、参入障壁が非常に低いことです (既に SQL Server を使用していると仮定します)。StackOverflow はそれを検索に使用します。欠点は、その有効性 (またはその欠如) が、SOの最も頻繁に批判される機能の 1 つであることです。多くの人 (私自身を含む) がデフォルトで Google で "site:stackoverflow.com ..." を使用するほどです。
Google カスタム検索も参入障壁が低いですが、インデックスが更新される頻度や返される検索結果の数をある程度制御できなくなります。Google Site Searchは、これらの機能の一部 (オンデマンド インデックス作成など) を修正したより優れたバージョンです。
最上位にはGoogle 検索アプライアンスがあります。これは、データが公開されていない場合の Google の唯一のオプションです。
どちらが適切かは、データを再インデックス化する必要がある頻度、行うリクエストの数、インデックス化のために使用する帯域幅、データが公開されているかどうか、および検索結果をどれだけ良好にする必要があるかによって異なります。答えは一つではありません。