SQL 全文搜索不包含精确
SQL Full Text Search NOT contain exact
在我的应用程序中,客户可以选择多个词从他们的搜索中排除。这些词 运行 针对 FullTextSearch 字段。
我想知道是否有一种方法可以使 完全匹配 与 全文搜索 .
例如字段包含
Record 1 - `Oranges, Apples, BloodOranges`
Record 2 - `Oranges`
Record 3 - `BloodOranges`
Record 4 - `Apples`
如果客户过滤橙子,它将过滤 Oranges 和 BloodOranges。我想 return 记录 3,4.
SELECT *
FROM Contacts
WHERE Contains (taglist, 'Oranges')
在SQL-服务器中你可以使用CONTAINSTABLE
例如:
这 returns 您是包含确切短语“Oranges”的联系人
SELECT *, k.[Rank]
FROM Contacts c
INNER JOIN CONTAINSTABLE([dbo].[Contacts], taglist, N'"Oranges"') as [k]
ON c.Id = k.[Key]
对于你想要的,你可以这样写:
;With CTE AS
(
SELECT c.Id
FROM Contacts c
INNER JOIN CONTAINSTABLE([dbo].[Contacts], taglist, N'"Oranges"') as [k]
ON c.Id = k.[Key]
)
Select * From Contacts CC
Where CC.Id not in (Select Id From CTE)
在我的应用程序中,客户可以选择多个词从他们的搜索中排除。这些词 运行 针对 FullTextSearch 字段。
我想知道是否有一种方法可以使 完全匹配 与 全文搜索 .
例如字段包含
Record 1 - `Oranges, Apples, BloodOranges`
Record 2 - `Oranges`
Record 3 - `BloodOranges`
Record 4 - `Apples`
如果客户过滤橙子,它将过滤 Oranges 和 BloodOranges。我想 return 记录 3,4.
SELECT *
FROM Contacts
WHERE Contains (taglist, 'Oranges')
在SQL-服务器中你可以使用CONTAINSTABLE
例如:
这 returns 您是包含确切短语“Oranges”的联系人
SELECT *, k.[Rank]
FROM Contacts c
INNER JOIN CONTAINSTABLE([dbo].[Contacts], taglist, N'"Oranges"') as [k]
ON c.Id = k.[Key]
对于你想要的,你可以这样写:
;With CTE AS
(
SELECT c.Id
FROM Contacts c
INNER JOIN CONTAINSTABLE([dbo].[Contacts], taglist, N'"Oranges"') as [k]
ON c.Id = k.[Key]
)
Select * From Contacts CC
Where CC.Id not in (Select Id From CTE)