2012-01-10 6 views
8

現在、私はSQLとPHPで検索エンジンを実行したいと考えています。私はcrrently次のクエリを使用します。文字列がXで始まるSQLで検索

SELECT * FROM info WHERE name LIKE '%$q%' LIMIT 10 

をしかし、私は$ qを、ない$ Qをcointainもので始まる「名前」との情報を選択します。

+0

「検索エンジンを使いたい」という意味はどういう意味ですか?クエリを実行したいという意味ですか? –

答えて

20

単に最初のワイルドカード(%)を削除:あなたは複数の名前を持っていて、フィールドの真ん中にあるかもしれない名前を検索するフィールドを検索するために欠けている場合は、その後、

SELECT * FROM info WHERE name LIKE 'X%' LIMIT 10 
0

Full Text Search(FTS)を使用する方が良いかもしれません。たとえば、OPのnameフィールドにフルネームが含まれていて、"John Doe"が含まれていて"Doe"を検索する場合は、LIKEオペレータを使用するよりも、FTSがおそらくより正確に(より正確で高速に)なる可能性があります。 FTSを使用すると、テキスト内の個々の単語が索引付けされるため、検索が非常に高速になります。さらに、隣接していないフィールドで2つの単語(または名前)を見つける機能(たとえば、ランダム)。

特定のデータベースベンダーはOPでは言及されていませんが、FTSがサポートされている場合は、試行しているものに適しています。一部のFTS information for SQL Serverfor MySQLは簡単に検索で見つけられます。

関連する問題