アプリケーションのデータベースを Windows Azure SQL データベースに移行中です。アプリケーション内にはいくつかの軽量な検索機能があり、現在は T-SQL とフルテキスト インデックス作成を使用して検索を処理しています。ただし、フルテキスト インデックス作成は現在 Azure では利用できません。
すばらしい Lucene.Net などの非 SQL ソリューションを検討していますが、私たちがやろうとしていることにはやり過ぎかもしれないと思います。私たちが検索しているデータセットは巨大ではなく、平均して 100,000 レコード未満であり、その数はわずかです。テーブルの例は次のようになります...
CREATE TABLE dbo.Items(
[ItemID] [int] IDENTITY(1,1) NOT NULL,
[Author] [varchar](255) NULL,
[Subject] [varchar](255) NULL,
[ItemContent] [nvarchar](max) NULL,
CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ([ItemID] ASC)
)
...Author、Subject、および ItemContent フィールドを検索する場所。Author と Subject は複数の単語である可能性があり、ItemContent フィールドは複数の段落である可能性があるため、テーブル スキャンを回避する方法がわかりません。フルテキスト インデックスは非常にうまく機能しました。
SELECT ItemID FROM dbo.Items WHERE Author LIKE '%' + @SearchTerm + '%' OR Subject LIKE '%' + @SearchTerm + '%' OR ItemContent LIKE '%' + @SearchTerm + '%'
全文索引を使用せずにこのタイプの検索を最適化する方法について提案がある人はいますか?