【问题标题】:Why doesn't my Full text search yields results?为什么我的全文搜索没有结果?
【发布时间】:2015-05-27 13:08:34
【问题描述】:

我有一个简单的View

让我们选择前 5 行:(视图没有 top 5 - 只是为了清楚起见)

SELECT TOP 5 [CustomerId]
      ,[EngLastFirst]
      ,[EngFirstLast]
      ,[LocalLastFirst]
      ,[LocalFirstLast]
  FROM [WebERP].[dbo].[View_CustomersNames]

结果:

让我们创建一个全文索引(右击view):

好的。所以现在我们也有一个catalog

右击catalog - 查看属性:

所有属性都是default

让我们在catalog上点击rebuild

很棒

让我们运行一个简单的CONTAINS 查询:

SELECT * FROM View_CustomersNames vcn 
        where CONTAINS( vcn.*, '"aerSwy*"') 

正如您从之前的代码中看到的 - 记录确实存在:

但是它返回no结果

虽然like 确实返回结果:

SELECT * FROM View_CustomersNames vcn 
        where  vcn.engLAstFirst LIKE '%aerSwy%'   

问题:

为什么我没有得到这个查询的结果?

SELECT * FROM View_CustomersNames vcn 
        where CONTAINS( vcn.*, '"aerSwy*"')

NB - 我可能遗漏了一些非常基本的东西(全文搜索的新手)

编辑

在生产环境中 - 它确实有效。在我的本地环境中 - 它没有

【问题讨论】:

  • 我对全文搜索一无所知,但也许搜索词应该使用 % 通配符而不是 *
  • @Origin (msdn) : i.imgur.com/hB7m0Cz.png
  • 您的视图仅从表中选择 5 条记录,没有 ORDER BY,这可能会导致随机结果。您期望的记录可能不在前 5 名中,无论是在查询时还是在索引时。尝试从视图中删除 TOP 5。
  • 本地语言和生产环境的默认语言有区别吗?
  • SO 应该将 downvoter 活动冻结一个月。我从未在 SO 中看到过如此详细的问题。 (不管我是不是)

标签: sql-server sql-server-2008-r2 full-text-search


【解决方案1】:

发现问题——是权限问题

这里:

现在CONTAINS 起作用了:

【讨论】:

    【解决方案2】:

    您应该从您的视图中删除 TOP 5。我不相信这会在 SQL 中起作用。订购您的结果,但是您需要像 Keith 所说的那样。这是一些基本 SQL 示例的链接。 http://www.w3schools.com/sql/sql_quickref.asp 在重构您的陈述时尝试使用其中的一些作为参考。这些应该有助于指导您操作 sql 以执行您需要的操作。另外,我认为您不需要在 SQL 语句中引用表名之后输入数据库的名称。

    【讨论】:

    • 这只是一个例子。视图没有前 5。这不是我提到的问题
    猜你喜欢
    • 2012-06-13
    • 2010-10-08
    • 2018-08-30
    • 2020-07-09
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多