【问题标题】:Full-Text Search by last name, first name and second name按姓氏、名字和姓氏进行全文搜索
【发布时间】:2015-01-09 18:02:22
【问题描述】:

您好,我使用 SQL Server,我想在下表中进行全文搜索

CREATE TABLE Students
(
    id int PRIMARY KEY IDENTITY,
    firstName varchar(MAX) NOT NULL CHECK (firstName != ''),
    secondName varchar(MAX) NULL CHECK (secondName != ''),
    lastName varchar(MAX) NOT NULL CHECK (lastName != ''),
    birthDate datetime2 NOT NULL CHECK (birthDate >= '1.01.1990'),
    recordBookNumber int NOT NULL UNIQUE CHECK (recordBookNumber > 0),
    enrollmentDate datetime2 NOT NULL CHECK (enrollmentDate >= '1.01.1990'),
    groupId int NOT NULL FOREIGN KEY REFERENCES [Groups](id) ON DELETE CASCADE
)

所以我创建了视图StudentSearchView、聚集索引、全文目录和全文索引

全文索引在这里:

CREATE FULLTEXT INDEX ON
    dbo.StudentsSearchView (
        firstName LANGUAGE 1033,
        secondName LANGUAGE 1033,
        lastName LANGUAGE 1033
    )
KEY INDEX IDX_SEARCH ON ftCatalog
WITH (
    CHANGE_TRACKING = AUTO, 
    STOPLIST = SYSTEM
)

所以我有一个文本框,我在其中输入像“John Peter Smith”这样的字符串,我想得到所有 匹配,但我无法找出我需要使用什么查询。我试试这个

SELECT * FROM
    dbo.StudentsSearchView
WHERE CONTAINS (
    *, '"LastName*" & "FirstName*" & "SecondName*"'
)

但什么也没找到,虽然我在表中有这一行。

P.S.LastName、FirstName 和 SecondName 将以编程方式插入

【问题讨论】:

    标签: sql-server view full-text-search


    【解决方案1】:

    我解决了。我的错误是视图。原来是

    CREATE VIEW
        dbo.StudentsSearchView WITH SCHEMABINDING
    AS
    SELECT
        id, firstName, secondName, lastName
    FROM
        dbo.Students
    GO
    

    但它必须是这样的:

    CREATE VIEW
        dbo.StudentsSearchView (id, Fio) WITH SCHEMABINDING
    AS
    SELECT
        id, firstName + ' ' + ISNULL(secondName, '') + ' ' + lastName
    FROM
        dbo.Students
    GO
    

    所以,现在这个 Select 查询可以工作了

    SELECT * FROM
        dbo.StudentsSearchView
    WHERE CONTAINS (
        *, '"LastName*" & "FirstName*" & "SecondName*"'
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 2023-03-19
      • 2018-09-02
      • 1970-01-01
      相关资源
      最近更新 更多