1

以下に指定されてTableAいるように、列にフルテキストインデックスが指定されています。Name

TableA

Id (PK)
Name (TXI)

テーブルには次のレコードがあります。

ingrid
neville
ned
audry
inga

次に、テーブルに対して次のクエリを実行します。

SELECT * FROM TableA WHERE CONTAINS(Name,'"n*"');

クエリの結果は次のとおりです。

Id         Name
1          ingrid 
2          neville
3          ned

'n'で始まらないのに、なぜ最初のレコードを返すのですか?

4

4 に答える 4

0

フルテキストインデックスが古くなっている可能性があります。再構築すると問題は解決しますか?

于 2011-06-02T19:24:38.130 に答える
0

あなたの質問は私のために働きます....:

TRUNCATE TABLE FTS_Demo_2

INSERT  FTS_Demo_2 (Document) VALUES ('ingrid')
INSERT  FTS_Demo_2 (Document) VALUES ('neville')
INSERT  FTS_Demo_2 (Document) VALUES ('ned')
INSERT  FTS_Demo_2 (Document) VALUES ('audry')
INSERT  FTS_Demo_2 (Document) VALUES ('inga')

/* WAIT FOR AUTO POPULATION TO POPULATE */

SELECT  * FROM FTS_Demo_2 WHERE CONTAINS (Document, '"n*"')

結果:

RecordID    Document
----------- --------------------
2           neville
3           ned

(2 row(s) affected)

多分それはあなたのFTSインデックスまたはカタログに問題がありますか?あなたの列の種類は何ですか?この例ではNVARCHAR(MAX)の列を作成しました。これは、カタログのプロパティです。

ここに画像の説明を入力してください

于 2012-05-08T21:02:32.487 に答える
0

試す:

SELECT * FROM TableA WHERE CONTAINS(Name,'n*');
于 2011-06-02T16:36:02.147 に答える
0

Jim B の提案に従って、次の方法でカタログを更新してみてください。

ALTER FULLTEXT CATALOG TableA REORGANIZE

それから

SELECT * FROM TableA WHERE CONTAINS(Name,'"n*"');

別のヒント:フルテキストの目的はテキスト内の単語を検索することなので、フルテキストをテストしているかどうかはわかりませんが、探しているものを取得するには、次のように演算子LIKEを使用します。

SELECT * FROM TableA WHERE Name LIKE 'n%';
于 2011-06-02T21:01:38.647 に答える