2016-03-23 13 views
1

一部のレコードのみをフルテキストカタログに保存する方法はありますか?たとえば、私たちは、このレコードが有効かどうRecActiveは意味の列SQL Serverの一部の行のみを保存する全文検索カタログ

Id, VatNumber, Name, Street, ....other fields ..., 
RecCreatedOn, RecCreatedBy, RecModifiedOn, RecModifiedBy, RecActive 

列を持つテーブルtaxablePersonを持っています。レコードは、私が実行検索するとき、彼らはRecActive = 0を設定することによって削除され、削除されません。

SELECT TOP 50 * 
FROM TaxPerson.TaxablePerson AS tp 
INNER JOIN CONTAINSTABLE(TaxPerson.TaxablePerson, (Name), @find) AS key_table 
    ON key_table.[key] = tp.id 
WHERE tp.RecActive = 1 
ORDER BY key_table.rank DESC; 

パフォーマンスは、内部結合を用いないことにより、非常に良いです。 RecActive = 1のレコードだけを全文検索カタログに入れる方法はありますか?これはms sql ftsの優れた機能です。

+1

これはあなたが探しているものです。フィルタリングされたインデックスhttps://www.simple-talk.com/sql/performance/introduction-to-sql-server-filtered-indexes/? – Aditya

+0

@Adityaこれは解決策ですが、[全文検索インデックス](https://msdn.microsoft.com/en-us/library/ms187317.aspx)はフィルタリングをサポートしていません。たとえば、 'TaxPersonの全文索引作成。TaxPersonFTS_Catalog WHERE TaxPerson.RecActive = 1'上の.TaxablePerson(Name)キーインデックスID。とにかく、フィルタリングされたインデックスを作成できるようになりました。 – broadband

答えて

0

を作成し、VIEWを作成し、フルテキストインデックスをビューに追加することができます。

関連する問題