Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在文本跨越多个列时进行全文查询_Sql_Sql Server 2005_Full Text Search - Fatal编程技术网

Sql 如何在文本跨越多个列时进行全文查询

Sql 如何在文本跨越多个列时进行全文查询,sql,sql-server-2005,full-text-search,Sql,Sql Server 2005,Full Text Search,我们有一个包含多个全文索引字段的表。比如说,它是名、姓和姓。我在找“约翰和史密斯”,很明显,这两个词很可能写在不同的领域。查询不返回任何内容。如果我搜索“约翰或史密斯”,它是有效的 问题是:我是否可以告诉SQL Server,属于特定表的一行的所有字段都应该被视为一个连续文本片段 当然,我可以手动将字段合并到特殊字段并为其编制索引,但这看起来相当愚蠢 以防万一,这个查询。这与人的名字无关,但想法是一样的: SELECT [id], [type], [accessClass], [rank] F

我们有一个包含多个全文索引字段的表。比如说,它是名、姓和姓。我在找“约翰和史密斯”,很明显,这两个词很可能写在不同的领域。查询不返回任何内容。如果我搜索“约翰或史密斯”,它是有效的

问题是:我是否可以告诉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 Server中不支持此功能。更重要的是,这种行为在2004年被“纠正”:

我在MS Connect中添加了建议。请支持:

我的意思就是在“手动处理concat字段”下的这种方法。它正在工作,但看起来仍然很傻。:)这可能看起来很难看,但这确实是做到这一点的方法。