PHPを使用して、MySQLの高度な検索機能を手伝ってくれる人はいますか?
特定のフィールド (タイトル、説明) で検索を実行する必要があり、一部の特殊文字は次のように使用できます。
- 指定されたテキストで始まる複数の単語 (例: 検索語が「北*」の場合、北、北西などを含むエントリが返されます)
- 単語を除外する (たとえば、検索語が「vacation -bahamas」の場合、vacation を含むエントリが返されますが、bahamas を含むエントリは返されません)
PHPを使用して、MySQLの高度な検索機能を手伝ってくれる人はいますか?
特定のフィールド (タイトル、説明) で検索を実行する必要があり、一部の特殊文字は次のように使用できます。
おそらく、より専門的な検索テクノロジが必要になるでしょう。Sphinx Searchをチェックしてください。
多くの開発者はデータを MySQL に保存し、Sphinx Search などの検索エンジンをコンパニオン テクノロジとして使用して、データのインデックスを作成し、効率的に検索します。
仕事に適したツールを使用してください。
私はあなたが何を求めているのか少しわかりません。PHP で特定の機能を実現するためにこれを自分で実装したい場合は、次の SQL 知識が必要です。
SELECT * FROM table
WHERE title LIKE '%north%'
これにより、タイトルに「北」が含まれるすべてのエントリが検索されます
SELECT * FROM table W
HERE title LIKE 'north%'
これにより、タイトルが「北」で始まるすべてのエントリが検索されます
SELECT * FROM table W
WHERE (title LIKE 'north %' OR title LIKE '% north %' OR title LIKE '% north')
これにより、タイトルに「北」という単語が含まれるすべてのエントリが検索されます
SELECT * FROM table
WHERE (description LIKE '% vacation %' OR description LIKE 'vacation %' OR description LIKE '% vacation')
AND (description NOT LIKE '% bahamas %' AND description NOT LIKE 'bahamas %' AND description NOT LIKE '% bahamas')
これにより、説明に「bahamas」という単語ではなく「vacation」という単語が含まれるすべてのエントリが検索されます。
ただし、より複雑な (大文字と小文字を区別しないクエリを処理する) 堅牢で効率的なソリューションが必要な場合は、Bill Karwin の回答を参照してください。