2

我对我们目前遇到的这个问题感到非常困惑。

我以前从未见过这种情况……也不知道为什么会这样。

SELECT DISTINCT p.MY_ID , MY_NAME
FROM MYTABLE p
WHERE CONTAINS( (p.MY_NAME), '"nn11"' );

my_name 列是全文索引的,并且varchar(100)

  • nn11- 我得到 15 个结果都包含11在其中,但nn名称中没有字符......
  • n11- 我得到 0 个结果
  • 11我得到与相同的 15 个结果nn11

问题是,结果中没有任何n字符,所以从技术上讲,我应该得到 0 个结果,但我有时得到结果的事实对我来说毫无意义......

我需要重建索引吗?有可能它已损坏吗?

提前致谢

这是附加信息

这些是我目前得到的结果....对于nn11和11,但对于n11 0结果...

MYID    MYNAME
------- ------- 
18546   11
18693   11
18747   11
18781   11
18799   11
18800   11
18873   11
18958   11
18989   11
18993   11
19069   11
19122   11
19124   11-B
19186   11-A
19407   11-A

以及每次运行的结果:

nn11 - 0x006E006E00310031  1 0 1 Exact Match    nn11    0   nn11
n11 -  0x006E00310031      1 0 1 Exact Match    n11     0   n11
11-    0x00310031          1 0 1 Exact Match    11      0   11
       0x006E006E00310031  1 0 1 Exact Match    nn11    0   11
4

1 回答 1

0

数字实际上以 nn 前缀存储在 FTI 中,这就解释了为什么搜索 nn11 会返回与 11 相同的结果,但不会返回 n11。似乎没有直接的解决方法,但在http://social.msdn.microsoft.com/Forums/en-US/sqlsearch/thread/8592ea09-fcfb-4fec-a3a4-5e03dedcee3a/中描述了一种解决方法

于 2013-03-07T23:11:44.843 回答