代码之家  ›  专栏  ›  技术社区  ›  Gabriele Petrioli

全文搜索(SQL Server 2005)仅适用于某些字段

  •  0
  • Gabriele Petrioli  · 技术社区  · 15 年前

    好吧,情况就是这样……

    我正在表上启用全文搜索,但它只在某些字段上工作。

    CREATE FULLTEXT CATALOG [defaultcatalog]
    CREATE UNIQUE INDEX ui_staticid on static(id)
    CREATE FULLTEXT INDEX ON static(title_gr LANGUAGE 19,title_en,description_gr LANGUAGE 19,description_en) KEY INDEX staticid ON [defaultcatalog] WITH CHANGE_TRACKING AUTO
    

    下面为什么会有结果

    Select * from static where freetext(description_en, N'str')

    而这不是(当两者都有str的文本时….)

    Select * from static where freetext(description_gr, N'str')

    (我也在没有语言规范的情况下尝试过——本例中是希腊语) (数据库的排序规则是希腊语“ci”as) 顺便说一句

    Select * from static where description_gr like N'%str%'

    会很好的……

    所有字段均为nvarchar类型,且“gr”字段包含英语和希腊语文本..(不重要)

    我们将非常感谢您的帮助

    1 回复  |  直到 14 年前
        1
  •  0
  •   marc_s    15 年前

    只是想弄清楚到底发生了什么:您在这里得到的这个查询是什么?

    SELECT * FROM static WHERE FREETEXT(*, N'str')
    

    如果您没有显式地指定任何要搜索的列,它会给您预期的结果吗?

    另一点:我认为你的陈述中有一个错误的语言ID。根据SQL Server联机丛书:

    当指定为字符串时, 语言术语与别名相对应 syslanguages中的列值 系统表。字符串必须是 用单引号括起来,如 在“语言术语”中。 指定时 作为一个整数,语言术语是 实际LCID 它确定了 语言。

    从我在网上搜索的结果来看,希腊语的LCID是1032,而不是19。你能试试1032而不是19吗?有什么区别吗?

    马克