Nic*_*ico 6 sql-server-2008 full-text-search
我有一个在标题列上启用全文搜索的表格。我尝试使用包含表进行加权搜索,但我得到了 Rank 值的算术溢出。查询如下
SELECT ID, CAST(Res_Tbl.RANK AS Decimal) AS Relevancy , Title
FROM table1 AS INNER JOIN
CONTAINSTABLE(table1,Title,'ISABOUT("pétoncle" weight (.8), "pétoncle" weight (.8), "PÉTONCLE" weight (.8))',LANGUAGE 1036 ) AS Res_Tbl
ON ID = Res_Tbl.[KEY]
Run Code Online (Sandbox Code Playgroud)
当我执行此查询时,我得到:int 类型的算术溢出错误,值 = -83886083125.000076。
如果我删除两个 ';' 之一 在ISABOUT 函数中,查询成功完成。
请注意,如果查询成功完成没有结果,您需要有一些结果。
有谁知道如何解决这个问题?
这个问题也在Stackoverflow 上
限定符:由于我无法重新创建此问题,因此我无法确定这是否可以解决问题。然而,这些是我所看到的一些事情。
\n\n首先,与号、井号和分号是断字字符。这意味着,您实际上搜索的是“p”、“233”和“toncle”,而不是搜索字符串“pétoncle”。显然,这不是你的意图。
\n\n我必须假设您的数据集中某处有文本“pétoncle”。这意味着您需要完整的整个字符串。
\n\n您可以做一些事情。
\n\n1) 一起关闭停用词。您可以通过更改全文索引将其关闭来做到这一点。
\n\n请注意,您必须将数据库设置为 SQL Server 2008 兼容性,这样才不会生成语法错误:
\n\nALTER FULLTEXT INDEX ON Table1 SET STOPLIST OFF;\n
Run Code Online (Sandbox Code Playgroud)\n\n2) 创建新的非索引字表
\n\n如果您创建空的非索引字列表,您也许能够添加所需的非索引字或复制系统非索引字列表并删除不需要的非索引字。(我建议采用第二种方法)。
\n\n话虽如此,我无法在系统非索引字表中找到 & 或 #,因此它们可能是硬编码的。您可能只需关闭非索引字表即可。
\n\n3) 更改搜索以忽略“pétoncle”大小写。
\n\n如果您从 ISABOUT 中删除“p'toncle”并将其更改为“p toncle”,它可能会起作用:
\n\n\'ISABOUT("p\xc3\xa9toncle" weight (.8), "p toncle" weight (.8))\'\n
Run Code Online (Sandbox Code Playgroud)\n\n这些只是一些想法。就像我说的,如果无法访问系统或重新创建场景,我们将无法提供太多帮助。
\n\n为了您的研究乐趣,还有更多信息:
\n\n\n 归档时间: |
|
查看次数: |
1451 次 |
最近记录: |