ms sql 2012 サーバーでは、いくつかの列に全文検索インデックスがあります。
FREETEXTTABLE または CONTAINSTABLE を使用してクエリを実行しましたが、検索テキストが他の列とは異なる複数の列に表示された場合、私の反応は異なるはずです。
結果が表示された列名を区別または受け取る方法はありますか?
ありがとう。
質問する
395 次
1 に答える
1
*
すべての列を検索するオプションを指定して FREETEXTTABLE/CONTAINSTABLE を呼び出していると思います。代わりに、列ごとに 1 つずつ、複数の呼び出しを行ってみてください。これは、状況に応じて 1 つのクエリで行うことも、個別のクエリとして行うこともできます。
例 (1 クエリ方式):
SELECT
Case
When (MatchesColumn1or2.[KEY] is not null) Then 'Matches Column 1 or 2'
When (MatchesColumn3.[KEY] is not null) Then 'Matches Column 3'
End
FROM
FREETEXTTABLE(MyTable, (Column1, Column2), 'cat AND dog') as MatchesColumn1or2
full outer join
FREETEXTTABLE(MyTable, Column3, 'cat AND dog') as MatchesColumn3
on (MatchesColumn1or2.[KEY] = MatchesColumn3.[KEY])
元のランク値を維持したい場合の例を次に示しますが、追加されたパフォーマンス ヒットに注意してください。
SELECT
MatchAllColumns.[RANK],
Case
When (MatchesColumn1or2.[KEY] is not null) Then 'Matches Column 1 or 2'
When (MatchesColumn3.[KEY] is not null) Then 'Matches Column 3'
End
FROM
FREETEXTTABLE(MyTable, *, 'cat AND dog') as MatchAllColumns
left join
FREETEXTTABLE(MyTable, (Column1, Column2), 'cat AND dog') as MatchesColumn1or2
on (MatchAllColumns.[KEY] = MatchesColumn1or2.[KEY])
left join
FREETEXTTABLE(MyTable, Column3, 'cat AND dog') as MatchesColumn3
on (MatchAllColumns.[KEY] = MatchesColumn3.[KEY])
于 2013-06-10T14:26:41.920 に答える