1

ウェブサイトの検索をアップグレードしようとしています。

CONTAINSに出くわしました。

検索する列をFULLTEXTに設定しました。

私は何が欠けていますか?

title = Test is what i'm doing

SELECT * FROM test WHERE title LIKE "%Test%"

正常に動作します。

SELECT * FROM test WHERE CONTAINS('*', "'Test*'")

何も返しません。

私が試してみました

SELECT * FROM test WHERE CONTAINS(title, "Test")

そして私が考えることができる他のすべて。

含むものはすべて何も返しません。

これが私のテーブル構造です。

Action  Keyname Type    Unique  Packed  Column  Cardinality Collation   Null    Comment
 Edit    Drop   PRIMARY BTREE   Yes No  ID  15642   A           
 Edit    Drop   title   FULLTEXT    No  No  title   1       YES 

ここで何が欠けていますか?

MySQL5.5を使用しています

4

2 に答える 2

0

CONTAINS は、全文索引付きの列がある場合にのみ機能します。おそらく、それは整っていません。

http://msdn.microsoft.com/en-us/library/ms142497のドキュメントに従ってセットアップを行ってください。

于 2012-08-16T02:07:28.270 に答える
0
  1. 機能するには、title列にインデックスを付ける必要がありますCONTAINS。列はtitle索引付けされていますか?

  2. この投稿によると、contains キーワードでのワイルドカードの使用には制限があります。

  3. DB の実装によっては、二重引用符によって予期しない結果が生じる場合があります。安全のために、これを一重引用符に変更してください。( MSDNのいくつかの例では、二重引用符と単一引用符を使用していますが、外側の引用符は単一引用符です (例とは異なります)。

  4. 指定された文字列「Test」を持つレコードがデータベースにあることは確かですか?

  5. http://forums.asp.net/t/1639440.aspxでの返信の 1 つによると、CONTAINS演算子は SQL Express では使用できません。使用しているDBについて言及していないため、これが当てはまる場合と当てはまらない場合があります。

于 2012-08-16T02:18:28.510 に答える