1

1) FirstName、LastName、および City というテキスト フィールドがあります。それらは全文索引付けされています。

2) フルテキスト インデックスではなく、FK int フィールドの AuthorId と EditorId もあります。

FirstName = 'abc' AND AuthorId = 1 で検索すると、最初にフルテキスト インデックス全体で 'abc' が検索され、次に AuthorId = 1 の結果セットが絞り込まれます。

適用できない多くのレコードに対して全文検索が実行されるため、リソースが大幅に浪費されるため、これは良くありません。

残念ながら、私の知る限り、FTS プロセスは SQL Server とは別であるため、これを回避することはできません (最初に AuthorId で絞り込み、次に一致するサブセットを全文検索します)。

今、私がフィードバックを求めている提案された解決策: Author をテキスト (例: AUTHORONE) として識別する全文検索に含まれる別の計算列を作成することは理にかなっていますか? そうすれば、AuthorId の制限を取り除き、代わりに全文検索の一部にすることができます (「abc」の検索は「abc」と「AUTHORONE」になり、すべて全文検索の一部として実行されます)。

これは良い考えですか?なんで?

4

1 に答える 1

0

SQL 2000 および SQL 2005 では、フルテキスト インデックスが構築される列に検索可能なキーを埋め込むことをお勧めします。これは、SQL 2000 および SQL 2005 が、Microsoft が混合クエリ シナリオと呼んでいるものを効率的に処理できないためです。

SQL 2008 では、全文がデータベースに完全に統合されており、通常、他の検索キーをデータに埋め込む必要はありません。

注: 上記の例では、「1」を「ONE」という単語に変換する必要はありません。SQL FT は "Author1" を問題なく検出します。

于 2011-08-30T22:48:57.240 に答える