2011-07-13 12 views
0

正確に同じ文字のみを検索する検索ボックスを持つウェブサイトで検索を改善する必要があります。データベース内の単語を検索する

select   O_ObjectID, 
       rtrim(O_Name) as O_Name 
    from   A_Object 
    where   O_Name like @NamePrefix + '%' 
    order by  O_Name 
+3

なぜフルテキスト検索を使用しないのですか? http://msdn.microsoft.com/en-us/library/ms142547.aspx – viper

答えて

1

厳密に言えば、あなたが本当に探しているのは「ハイパーリンク」で始まる単語です。つまり、スペース文字があるか、テキストフィールドの先頭になります。あなたのクエリを意味するだろう'% ' + @NamePrefix + '%'

あなたの他のオプションに追加された空白文字は、フルテキスト検索を使用することです

select   O_ObjectID, 
      rtrim(O_Name) as O_Name 
from   A_Object 
where   O_Name like @NamePrefix + '%' OR O_Name like '% ' + @NamePrefix + '%' 
order by  O_Name 

ノートは、次のようになります。

select   O_ObjectID, 
      rtrim(O_Name) as O_Name 
from   A_Object 
where   CONTAINS(O_Name, '"'+ @NamePrefix + '*"') 
order by  O_Name 

とパフォーマンスを、この意志に単語レベルで索引付けされるため、大幅に高速になります。

1

使用あなたが%を置く必要はこの

select   O_ObjectID, 
       rtrim(O_Name) as O_Name 
    from   A_Object 
    where   O_Name like '%'+ @NamePrefix + '%' 
    order by  O_Name 

- 私は、ハイパーリンクを入力すると、それは_hyperlinkなどはここに私のSQLクエリでは、そのようなcontenthyperlinkなどのハイパーリンクではなく、何から始めて、すべてを返します。検索テキストの両側に<anything>hyperlink<anything>と一致するようにします.SQLのような演算子がどのように動作するかを確認してくださいhttp://www.w3schools.com/sql/sql_like.asp。しかし、Simos Mikelatosがフルテキスト検索を使用すると上記のように嫌われたので、よりスリムな言葉でも一致を見つけることができます。

関連する問題