我正在使用 SQLServer 2008,如果我执行以下查询:
SELECT
*
FROM
FREETEXTTABLE(SomeTable, Name, 'a name that I know exists')
我得到了我期望的行,但排名始终为 0。
寻找这个问题的解决方案,我发现这个问题在 Microsoft ASP.NET 论坛上,如果我添加:
ALTER FULLTEXT CATALOG MyCatalog REBUILD
我开始获得军衔——但只是暂时的。
我不想每次进行搜索时都必须重建我的目录,特别是当我的数据库中有大量数据时,如果我在查询之前将其直接添加到我的存储过程中,我的查询无论如何都不会返回任何结果,大概是因为目录已完成重建。似乎还有其他人遇到这个问题和类似的问题,但我一直无法找到解决方案。有任何想法吗?
我正在处理同样的问题,并且目前接受的答案对我来说不是一个解决方案。
是的,排名是按照这个答案所述完成的,但是当自上次目录重建以来已经过了一段时间时,这绝不是结果不一致的原因。重建后排名不应发生显着变化,重建后几分钟内更不应发生变化......
对我来说,有一个错误freetexttable
排行。 (不影响的错误containstable
排名:我自己用自己的buggy目录查了一下,上面也有写这个微软论坛帖子.)
From 这是另一个 Microsoft 论坛帖子看来这个错误只发生在只有很少行索引的目录中。将数据添加到目录会导致错误消失。
所以这是我的答案,摘自Pavel Valenta 在另一个 Microsoft 论坛帖子中:
如果您的真实目录不会有超过数百行的索引,请向目录中添加一些虚拟表,以便为更多的行建立索引。
由于查询的构建方式,这不会污染您的结果。是的,这似乎是一个很奇怪的修复。但这是唯一为我解决了麻烦的方法。
最后一点:我在 sql 2005 sp4 上遇到了这个问题,没有在 2008 上进行过测试。(问题是针对 2008 年的。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)