2011-11-01 15 views
5

Sql Server 2008を使用すると、実際にフルテキスト検索を使用して正確な文字列一致を見つけることができます。私はこれで本当に苦労しており、どこでもオンラインで満足のいく解決策を見つけることができませんでした。フルテキスト検索を使用した完全一致の検索

たとえば、「Bojan Skrchevski」という文字列を検索している場合は、最初の結果が正確に表示されます。

これまでのところ、「Bojan * NEAR Skrchevski *」のような文字列をフォーマットして、結果を得るためにCONTAINSTABLEを呼び出しましたが、この文字列はBojanaやBojanananaなどの結果を返すようにフォーマットされています。 RANK、しかしまだ成功していない。

さらに、私の文字列で私のような多数の配列を有する: "3 1 7" が、現在のフォーマットでそれも返し "7 1 3" など

例:

DECLARE @var varchar(4000); 
SET @var = '"Oxford*" NEAR 24 NEAR 7 NEAR 5 NEAR "London*"' 
SELECT [Key] FROM CONTAINSTABLE(dbo.[MyTable], [MyField], @var); 

私は正確な注文を得ることができるようにしたい。結果として「Oxford 7 24 5 London」を手に入れることはできません。

文字列を正しくフォーマットするにはどうすればよいですか?

答えて

0

おそらく一つのアプローチは、フルテキスト検索にはいくつかの結果を選択することで、その後SELECTそれらの結果から特定のものでした。しかしこれにはもっと良い解決策があるかもしれません。

私はこのアプローチを試みましたが、実際にはうまくいきました。それはまたちょうどSELECTの値に多くより速く働いています。

1

2つのオプション ) これは

SELECT Name, ListPrice 
FROM Production.Product 
WHERE ListPrice = 80.99 
    AND CONTAINS(Name, 'Mountain'); 
GO 

2) これは関係なく、ドキュメント内のこれらの3つの文字列を持っていないすべてのアイテムを取得する彼らの名の下に山を持っているすべてのアイテムを取得しますありますどのような注文

SELECT Title 
FROM Production.Document 
WHERE FREETEXT (Document, 'vital safety components'); 

あなたが本当にしたいことに依存しますが、私は完全に理解できませんでした。

私がポイントを紛失している場合は、サンプルを投稿し、結果をどうぞ。

KR、

クリストフ

+0

@Kristoff - 例: "Oxford 24 3 6 London"のような文字列を検索し、 "Oxford 3 24 6 London"がある場合はこれも返されます。私は正確な順序で正確に一致したいだけです。 – TheBoyan

+0

参考のため、例は次の場所にあります。http://msdn.microsoft.com/en-us/library/ms142583.aspx – Mike

関連する問題