間に有意な差は含まれており、CONTAINSTABLE?
-
25-09-2019 - |
質問
私は、ファイルストリームとvarchar型(最大)の列により作成されたフルテキストインデックスが有効になっています。ファイルストリームは、JPGの、TIFの、PDFの、およびXMLの(これは質問にほとんど無関係ですが、私は信じている)。
などのデータが含まれています私は私が指数に検索できるように、私が作成したという2つのクエリを持っています。
-全文は、#1を検索します
select
parentObj.ObjectID as 'GroupingID',
parentObj.Name as 'Grouping',
childObj.ObjectID as 'FileObjID',
childObj.Name as 'FileName',
fs.FileStreamID
from dbo.dat_FileStream fs
inner join dbo.dat_Object childObj
on fs.ObjectID = childObj.ObjectID
inner join dbo.dat_Collection c
on fs.ObjectID = c.ObjectID
inner join dbo.dat_Object parentObj
on c.ParentID = parentObj.ObjectID
where contains(FileStreamData, @srchTerm)
and parentObj.ObjectTypeID = 1
ORDER BY 'Grouping'
- 全文は#2を検索します
select
KEY_TBL.RANK,
parentObj.ObjectID as 'GroupingID',
parentObj.Name as 'Grouping',
childObj.ObjectID as 'FileObjID',
childObj.Name as 'FileName',
fs.FileStreamID
from dbo.dat_FileStream fs
inner join containstable(dbo.dat_FileStream, FileStreamData, @srchTerm, 1000) as KEY_TBL
on fs.FileStreamID = KEY_TBL.[KEY]
inner join dbo.dat_Object childObj
on fs.ObjectID = childObj.ObjectID
inner join dbo.dat_Collection c
on fs.ObjectID = c.ObjectID
inner join dbo.dat_Object parentObj
on c.ParentID = parentObj.ObjectID
where parentObj.ObjectTypeID = 1
ORDER BY 'Grouping'
は2つのフルテキスト検索との唯一の大きな違いは、クエリ#1の用途が含まれていると、クエリ#2の用途CONTAINSTABLEです。
私の問題は、2つのクエリが常に同じ結果が得られていないということです。たとえば、クエリ#2はこれだけであるように思わ6の結果セットをもたらすだろうが、私は、クエリ#1 10枚の異なるドキュメント(PDF者とXMLの)の結果セットをもたらすであろう、というフレーズ「独立請負業者」を検索していましたルール:クエリ#1は常にクエリ#2、およびクエリ#2よりもさらにいくつかをもたらし、常にクエリ#1がないことを正確に同じ一致が得られます。
クエリ#1 - "独立請負業者" 収量に検索:
4262 AAA-00-12 4561 AAA-00-12.pdf 4235
4316 AAA-00-15 4753 AAA-00-15.pdf 4427
4316 AAA-00-15 4754 AAA-00-15.xml 4428
3873 AAA-00-19 4784 AAA-00-19.pdf 4458
3903 AAA-00-22 6795 AAA-00-22.pdf 6459
3953 AAA-00-24 6899 AAA-00-24.pdf 6563
3953 AAA-00-24 6900 AAA-00-24.xml 6564
4842 AAA-00-9 4905 AAA-00-9.pdf 4577
4842 AAA-00-9 4906 AAA-00-9.xml 4578
4057 AAA-0001 4260 AAA-0001.pdf 3936
クエリ#2 - "独立請負業者" 収量に検索:
19 4262 AAA-00-12 4561 AAA-00-12.pdf 4235
126 4316 AAA-00-15 4754 AAA-00-15.xml 4428
126 4316 AAA-00-15 4753 AAA-00-15.pdf 4427
116 3873 AAA-00-19 4784 AAA-00-19.pdf 4458
125 3903 AAA-00-22 6795 AAA-00-22.pdf 6459
57 3953 AAA-00-24 6900 AAA-00-24.xml 6564
57 3953 AAA-00-24 6899 AAA-00-24.pdf 6563
解決
唯一nhighestが降順に、マッチをランク付けしていること
top_n_by_rank
を指定し、 返されます。ときにのみ適用されます 整数値、Nは、指定されています。もし<強いです> top_n_by_rankが組み合わされます パラメータは、クエリが返すことができます 行数より少ない行 実際にすべて一致していること 述語。の
トップoをワット/を実行してみてください、それがCONTAINS
と一致するかどうかを確認します。
所属していません StackOverflow