0

私の検索フレーズは「test doc」です。

次のような全文検索フレーズを含むクエリがあります。

SELECT doc.iEntityId, doc.strName, doc.iHandbookId
FROM m136_tblDocument doc
WHERE iLatestApproved = 1
AND doc.iDeleted = 0
AND (
(CONTAINS(doc.strName, '"test doc*"')))

この写真として結果: 結果

しかし、検索語句を入力しようとすると、「test doc 3」です。

当たりません。 結果

私の予想では 、 test document 23test doc 3test doc 1.3.1の 3 つのヒットが表示されます。

誰でも私を助けることができますか?

少し早いですがお礼を。

4

1 に答える 1

0

フルテキストは、テキスト、大きなテキストを対象としています。あなたの例では、小さなものを探しています。Small は、約 100 文字未満のテキストです。

このコードは常に機能します。

SELECT doc.iEntityId, doc.strName, doc.iHandbookId
FROM m136_tblDocument doc
WHERE iLatestApproved = 1
AND doc.iDeleted = 0
AND doc.strName LIKE '%test doc 3%'

フルテキストを使用すると、少し問題が生じる場合があります。Microsoft Connect の機能にバグが見つかりました。この機能を適切に使用するには、BOL を読み取る必要があります。たとえば、これは機能をよく説明しています-https://www.simple-talk.com/sql/learn-sql-server/sql-server-full-text-search-language-features/

あなたの場合、私のアドバイスはそれを LIKE に置き換えることです。心配はいりません。インデックスを使用すると、クエリのパフォーマンスを向上させることができます。インデックスが必要かどうかを確認するために、短いチューニングを行います。

于 2016-07-05T08:17:40.510 に答える