-3

PHPを使用して、MySQLの高度な検索機能を手伝ってくれる人はいますか?

特定のフィールド (タイトル、説明) で検索を実行する必要があり、一部の特殊文字は次のように使用できます。

  • 指定されたテキストで始まる複数の単語 (例: 検索語が「北*」の場合、北、北西などを含むエントリが返されます)
  • 単語を除外する (たとえば、検索語が「vacation -bahamas」の場合、vacation を含むエントリが返されますが、bahamas を含むエントリは返されません)
4

2 に答える 2

2

おそらく、より専門的な検索テクノロジが必要になるでしょう。Sphinx Searchをチェックしてください。

多くの開発者はデータを MySQL に保存し、Sphinx Search などの検索エンジンをコンパニオン テクノロジとして使用して、データのインデックスを作成し、効率的に検索します。

仕事に適したツールを使用してください。

于 2013-11-04T18:37:45.877 に答える
0

私はあなたが何を求めているのか少しわかりません。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 の回答を参照してください。

于 2013-11-04T19:51:25.953 に答える