4

CONTAINSTABLE2つのテーブル列を検索するために使用しています。検索に「」のような小さな単語が含まれると、それらが実際に列に存在する場合でも、検索は結果を返しません。

簡単な例。検索対象の列にテキストが含まれています。「システムをアップグレードする必要があります」

次のSQLは0行を返します

SELECT     * FROM Incident WHERE (TicketNumber IN (
SELECT TicketNumber FROM         [Action] FT_TBL INNER JOIN
CONTAINSTABLE(Action, Text, '"system" AND "needs" AND "to" AND "upgraded" AND NOT "Search Summary"') KEY_TBL ON FT_TBL.ID = KEY_TBL.[KEY]
UNION
SELECT TicketNumber FROM [Incident] FT_TBL INNER JOIN
CONTAINSTABLE(Incident, Subject, '"system" AND "needs" AND "to" AND "upgraded"') AS KEY_TBL ON FT_TBL.TicketNumber = KEY_TBL.[KEY]))

'to'を省略すると、正常に機能します。

SELECT     * FROM Incident WHERE (TicketNumber IN (
SELECT TicketNumber FROM         [Action] FT_TBL INNER JOIN
CONTAINSTABLE(Action, Text, '"system" AND "needs" AND "upgraded" AND NOT "Search Summary"') KEY_TBL ON FT_TBL.ID = KEY_TBL.[KEY]
UNION
SELECT TicketNumber FROM [Incident] FT_TBL INNER JOIN
CONTAINSTABLE(Incident, Subject, '"system" AND "needs" AND "upgraded"') AS KEY_TBL ON FT_TBL.TicketNumber = KEY_TBL.[KEY]))

CONTAINSTABLEこれらの小さな単語でどのように使用できますか、またはそれらを完全に除外する必要がありますか?これらの小さな単語が実際に検索で意味がある場合、どのようにしてそれらを検索に含めることができますか?

4

2 に答える 2

3

これらは「小さな単語」ではなく、ストップ リストにある一般的な単語です。それらは無視されます。

BOLのストップワードとストップリストを参照してください。

于 2010-09-29T13:22:51.873 に答える
1

空のものから始まるカスタム全文ストップリストの作成と関与に関する私の回答の最後をご覧ください。私がチェックしたところ、空のクエリは「to」、「be」、「the」、「for」などで機能します。

アップデート:

SQL Server 2005 には、MSSQL\FTData\noiseENG.txt が必要です。「Sql Server 2005 全文検索のノイズ ワード」の質問
に対する回答を表示することをお勧めします。

于 2010-09-29T18:25:09.177 に答える