当前位置: 首页 > 面试题库 >

在具有内部联接的视图上启用全文本搜索

边意
2023-03-14
问题内容

我正在运行Sql Server 2008 R2,并且需要在具有内部联接的视图上启用全文本搜索。我的问题是我不知道如何创建全文索引。

当我使用全文索引向导时,出现此错误。

必须在此表/视图上定义唯一列。

为了使您更好地理解我的问题,请参阅以下来自w3school
http://www.w3schools.com/sql/sql_join_inner.asp的示例。最后选择只是我的观点。

PersonOrderView  - View
    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
    FROM Persons
    INNER JOIN Orders
    ON Persons.P_Id=Orders.P_Id
    ORDER BY Persons.LastName     <- Order by is not important for me

Persons - Table
P_Id (PK, int, not null)
LastName(nvarchar(50), null)
FirstName(nvarchar(50), null)
Address(nvarchar(50), null)
City(nvarchar(50), null)

Orders - Table
O_Id(PK, int,  not null)
P_Id(FK, int, not null)
OrderNo(nvarchar(50), not null)

问题答案:

您只能在索引视图上创建全文本索引,这就是您收到错误的原因。要在表或视图上创建全文搜索,它必须具有唯一的单列且不可为空的索引。

换句话说,您应该创建如下视图:

CREATE VIEW ViewSearch WITH SCHEMABINDING AS
SELECT Persons.P_Id AS ID, Persons.LastName, Persons.FirstName, Orders.OrderNo
    FROM Persons
    INNER JOIN Orders ON Persons.P_Id=Orders.P_Id
GO
CREATE UNIQUE CLUSTERED INDEX IX_ViewSearch ON ViewSearch (ID)

SQL全文搜索通过称为“填充”的过程来构建全文索引,该过程将单词和单词在表格和行中的位置填充到索引中。这就是为什么您需要一个将唯一标识您每一行的字段的原因,这就是为什么您需要使视图建立索引。

更多信息在这里。



 类似资料:
  • 问题内容: 我正在创建一个拍卖网站。人们可以在这里寻找物品并在其上下注。我希望在用户帐户区域中有一个列表,显示用户对其进行出价的所有项目。 当然,每个项目可以有多个来自不同用户的赌注,因此我只希望显示最高金额的项目。这样一来,用户就可以关注其出价所在的所有项目,并可以跟踪他是否仍然是出价最高的项目。 这是我的数据库的样子: 因此,如上所示,我有3个表(item,itembid和user)。如您所见

  • 我有两张桌子如下 表1是父表,表2是子表。 如何在Oracle11g中创建连接来实现这一点。我使用sql navigator+

  • 问题内容: 希望对两个不同的文本文件执行内部联接。基本上,我正在寻找GNU联接程序的内部联接。这样的事情存在吗?如果没有,则or 解决方案将是最有帮助的,但是我的首选是Linux命令。 这是我要做的事的一个例子 文件1: 文件2: 结果: 问题答案: file2 末尾不应该包含吗? 如果是,您仍然可以使用:

  • 问题内容: 所以我有四个桌子。每个表都有一个与前一个表ID相同的ID。因此,我的点击表中有一个ID和一个广告来源的ID。在广告表中,它有一个广告ID和一个来自其广告系列的ID。所以这是一个例子。 因此,要找出表4中的值从何而来,我需要遍历每个表并检查它们具有哪个ID。基本上,我想知道表1中的哪些值与表4中的值相关联。 表4中的内容是网站的访问者,表1中的内容是互联网广告。我想知道哪些访客来自哪些广

  • 带有Mongoose的MongoDB(3.2.0) 收藏: 用户 null 查询: =>找到 =>找到(搜索大小写敏感为false) =>找到(使用diacriticSensitive搜索为false) =>找到(部分搜索) =>未找到(部分搜索) =>未找到(部分搜索) 你知道为什么我用查询“Leo”或“L”得到0个结果吗? null

  • 问题内容: 我有以下SQL语句。 视图在哪里。 现在,我想添加一个或多个表作为联接,以便我可以在列上进行文本搜索,例如包含员工信息,并且可以与 我已经在表上为列创建了索引,但是由于我将sql语句修改为,因此无法与v_depts一起进行搜索 它给我错误 即使我已经为表中的emp_name列创建了索引。我怎么解决这个问题? emp_name的索引语句 问题答案: 我通常通过实例化它们的结构化XML视图