SQL-为什么相同的全文搜索返回其他服务器上的不同结果



我在2个不同的服务器上具有同一表,其中包含全文目录。两个服务器中的两个表均已索引并设置相同。我尝试重新启动服务并重建目录。在两台服务器中运行相同的查询时,两个服务器中显示的freetextttable等级的显示方式不同。以下是示例查询。

SELECT *COLUMNS*
FROM TABLE
INNER JOIN FreeTextTable (TABLE, INDEXEDCOLUMN, N'"Sabariah Mohamed Ali" or "Ali Mohamed Sabariah"', 100) as KEY_TABLE ON TABLE.INDEX = KEY_TABLE.[KEY]  
WHERE KEY_TABLE.rank > 30
Select *COLUMNS*
from TABLE
Inner Join Containstable (TABLE, INDEXEDCOLUMN, N'"*Sabariah" or "Sabariah*" 
or "*Mohamed" or "Mohamed*"', 100) as KEY_TABLE on TABLE.INDEX = 
KEY_TABLE.[KEY]  
where KEY_TABLE.rank > 30

表中的索引列包含" Sabariah Binti Mohamed Ali"。因此,它应该返回结果,但是当我在key_table中检查排名时,这两个服务器都返回不同的数字。

我认为我的问题与此相似,全文搜索在测试和实时

上返回不同的结果

编辑:找到了一个类似的问题,尝试了提供的解决方案,创建虚拟表,创建索引和目录,也无法正常工作。https://social.msdn.microsoft.com/forums/sqlserver/en-us/a5532c9a-ece2-40cb-a8ac-4f53ba96175c/problemble-with-rank-nank-nank-nank-on-freetexttable-foretexttable?961a-9492bed0a1f0

根据搜索查询结果的排名(全文搜索)

构建索引时,会收集统计信息以进行排名。 构建全文目录的过程不会直接产生 在单个索引结构中。相反,SQL的全文引擎 当数据索引时,服务器会创建中间索引。全文 然后,根据需要将这些索引合并为较大的索引。这 过程可以多次重复。然后全文引擎进行 将所有中间索引结合到 一个大型主索引。

在每个中间指数级别收集统计。这 合并索引时,统计数据合并。一些统计 值只能在主合并过程中生成。

在排名查询结果集时,SQL Server使用统计信息 最大的中间指数。这取决于是否中间 索引是否合并。结果,排名统计数据可以 如果尚未合并中间指数,则准确性有所不同。 这说明了为什么相同的查询可以返回不同的等级结果 随着全文索引数据的添加,修改和删除,随着时间的流逝, 随着较小的索引合并。

为了最小化索引和计算复杂性的大小, 统计数字通常是圆形的。

简而言之:排名基于逐渐收集和完善的统计数据。数据块统计数据结合在一起,正在进行一些舍入。即使在同一台服务器上,也没有特定的确定性重复模式,即爬车者如何索引块,更不用说不同的服务器了。任何事情都可以发挥作用,例如表实际商店排序订单,存储分页,内核和共享内存池在索引发生时的可用性。

更新以下注释:

在实验中,我在上几次运行了此(示例a OFF CONTALSTASE)

CREATE TABLE Flags (
  Country nvarchar(30),
  FlagColors varchar(200),
  CONSTRAINT FlagKey PRIMARY KEY CLUSTERED (Country)
);
INSERT Flags VALUES ('France', 'Blue and White and Red');  
INSERT Flags VALUES ('Italy', 'Green and White and Red');  
INSERT Flags VALUES ('Tanzania', 'Green and Yellow and Black and Yellow and Blue');  
GO
CREATE FULLTEXT CATALOG TestFTCat;
CREATE FULLTEXT INDEX ON Flags(FlagColors) KEY INDEX FlagKey ON TestFTCat;  
GO
WAITFOR DELAY '00:00:10'; --< "Crucial value"
SELECT * FROM CONTAINSTABLE (Flags, FlagColors, 'Green or Black') ORDER BY RANK DESC;  
DROP FULLTEXT INDEX ON Flags;
GO
DROP FULLTEXT CATALOG TestFTCat;
GO
DROP TABLE Flags;
GO

请注意"Crucial value":允许全文索引填充的时间。1到5秒,结果为

Tanzania    32
Italy       16

超过5秒,结果为

Tanzania    48
Italy       32

...这实际上是相同的服务器,数据和数据很简单。

相关内容

最新更新