【发布时间】:2011-01-05 13:41:17
【问题描述】:
我们有几个全文索引字段的表。比如说,它是 firstName、surName 和 lastName。我正在寻找“John AND Smith”,显然这两个词很可能会写在不同的领域。查询不返回任何内容。如果我搜索“John OR Smith”,它就可以工作。
问题是:我能否以某种方式告诉 SQL Server,属于特定表的一行的所有字段都应该被视为一个连续的文本片段?
当然,我可以手动将字段连接到特殊字段并对其进行索引,但它看起来很傻。
以防万一,查询。这不是关于人的名字,而是想法是一样的:
SELECT [id], [type], [accessClass], [rank]
FROM (
SELECT DISTINCT temp_result.*
FROM (
select SDF_Article.article_id [id],
6 [type], SDF_Object.accessClass [accessClass], RelevanceTable.[rank] [rank]
from SDF_Article inner join SDF_Object SDF_Object
on SDF_Article.article_id=SDF_Object.object_id
inner join SDF_Article_Locale SDF_Article_Locale
on SDF_Article.article_id=SDF_Article_Locale.article
inner join ContainsTable(SDF_Article_Locale, (title, body, brief),
'FORMSOF (INFLECTIONAL, hello) AND FORMSOF (INFLECTIONAL, world)', Language 'Russian') RelevanceTable
on SDF_Article_Locale.entry_id=RelevanceTable.[KEY]
) AS temp_result
INNER JOIN SDF_RelationMap SDF_Map
ON temp_result.[id] = SDF_Map.object AND SDF_Map.ancestor = 5 )
AS result ORDER BY [rank] desc
我们使用的是 SQL Server 2005。
【问题讨论】:
标签: sql sql-server-2005 full-text-search