-1

私は次のストアドプロシージャを持っています:-

SELECT Id, Name
FROM FooBars
WHERE CONTAINS(Name, 'FORMSOF(Tesaurus, @query)')

クエリに1つの単語がある場合は、正常に機能します。foo *しかし、探している単語が複数あると失敗します。例えば。foo * bar *(これは、fooで始まりbarで始まる単語を含むすべての行を意味します)。

シソーラスを使用した全文検索で複数の単語を有効にするには、@ query引数をどのような形式にする必要がありますか?

4

1 に答える 1

1

私の知る限り、2 つ以上の式を検索する場合は、AND、OR、または NEAR のいずれかでそれらを連結する必要があります (Books Online から直接)。

USE AdventureWorks;
GO

SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, '"chain*" OR "full*"');
GO

SELECT Description
FROM Production.ProductDescription
WHERE CONTAINS(Description, 'bike NEAR performance');
GO

SELECT Description
FROM Production.ProductDescription
WHERE ProductDescriptionID <> 5 AND
CONTAINS(Description, ' Aluminum AND spindle');

それが FORMSOF(...) 式とどのように連携するかは私にはわかりませんが、すぐに試すことができると思いますよね?

SELECT Id, Name
FROM FooBars
WHERE CONTAINS(Name, 'FORMSOF(THESAURUS, "foo*")'
    OR 'FORMSOF(THESAURUS, "bar*")')

また、FORMSOF () 式で「シソーラス」を正しく綴ってください。:-)

マルク

于 2009-06-04T05:17:53.570 に答える