ホームページ  >  記事  >  バックエンド開発  >  PHP検索について質問する

PHP検索について質問する

WBOY
WBOYオリジナル
2016-06-23 13:57:39756ブラウズ

たとえば、「誠実」というキーワードを入力すると、「私はあなたに本当に心を捧げました」という文を検索できます。これを実現するには、PHP をどのように使用すればよいでしょうか?専門家の回答をお願いします。


ディスカッションに返信(解決策)

それを実装するために何を使用するかによって異なります
データベースであれば、データ量が大きくないので、次のように使用できます

それは何を使用するかによって異なりますを使用して実装します
データベースの場合 データ量が多くなければ



データベースの特定のフィールドから取得することです

何を使用して実装するかによって異なります
データベースの場合、データ量が大きくない場合は、 like を使用できます



ここでの質問は、キーワードを分割して、分割フィールドを含むフィールドで検索する方法です。 like

テーブルを追加して、フィールド
関連する ID、キーワード

データが追加および変更されると、PHP はシソーラスをループします。これらの単語がある場合は、これらの単語をこのテーブルに入力し、検索時にこのテーブルを検索します

最も基本的な SQL ファジー クエリ

$ar = preg_split("//u", '真心', -1, PREG_SPLIT_NO_EMPTY);$where =array();foreach($ar as $v)    $where[]=" 字段 like '%$v%'";$sql="select * from tt " ;$sql .= empty($where) ? '' : ' where ' . join(' and ', $where);	echo $sql;

上の階に書かれているものはもう少し複雑ですが、一般的です
実際には、キーワードをループしてそれぞれ LIKE で分割することです

WHERE KWORD LIKE '%True%' と KWORD LIKE '%heart%' This両方の単語が一致する場合にのみ見つかります。ここでは、kwordが「%true%」またはkwordが「%心%」のようなものである場合にのみ見つかります。 「true」ですべてのフィールドを検索しますか? はい: このフィールドに「true」という単語が 1 つだけ含まれている場合、このフィールドは検索されません。たとえば、「とても気に入っています」は検索されません。ご機嫌です」と検索しても出てきません。

代わりに、「誠実」または「誠実」と「心」を含むフィールドが検索されます。

例: 私はそれがとても好きです。この文は検索されます。または、「私は本当にあなたに心を捧げました」という文も検索されます。


事務用品販売サイトで商品を検索する際に利用していたのですが、今回この問題に遭遇しました。


上に書いたことは少し複雑ですが、普遍的です
実際には、キーワードループを LIKE

WHERE KWORD LIKE '%真%' と KWORD LIKE '%心%' に分割することです。 2 つの単語のみに一致します。検索しました
WHERE KWORD LIKE '%True%' または KWORD LIKE '%heart%' 1 つを一致させてから検索できます

URL を開くと、次のような結果が得られます以下に「ファイルの透明性」と入力してください。これら 4 つの単語の効果を確認してください:

http://www.staples.cn/word/%E6%96%87%E4%BB%B6%E9%80%8F%E6% 98%8E



テーブル、フィールド
関連する ID、キーワード
を追加します。 データが追加および変更されると、PHP はこれらの単語をこのテーブルに入れて検索します。このテーブル



これは非現実的です

$ar = preg_split("//u", '真心', -1, PREG_SPLIT_NO_EMPTY);$where =array();foreach($ar as $v)    $where[]=" 字段 like '%$v%'";$sql="select * from tt " ;$sql .= empty($where) ? '' : ' where ' . join(' and ', $where);	echo $sql;



これは、「true」のフィールドと「heart」のフィールドをすべて検索しますか?私が望む結果は次のとおりです。このフィールドに「true」という単語が 1 つしか含まれていない場合、このフィールドは検索されません。たとえば、「とても気に入っています」は検索されません。また、「私は良い気分です」は検索されません。 。


代わりに、「誠実」または「誠実」と「心」を含むフィールドが検索されます。
例: 私はそれがとても好きです。この文は検索されます。または、「私は本当にあなたに心を捧げました」という文も検索されます。

事務用品販売サイトで商品を検索する際に利用していたのですが、今回この問題に遭遇しました。

まずは試してみませんか?






りー


これは、「true」を含むすべてのフィールドと「heart」を含むすべてのフィールドを検索しますか?

実際、私が望む結果は、このフィールドに「true」という単語が 1 つしか含まれていない場合、このフィールドは検索されません。たとえば、「とても好きです」は検索されません。また、「機嫌が良いです」は検索されません。

代わりに、「誠実」または「誠実」と「心」を含むフィールドが検索されます。

例: 私はそれがとても好きです。この文は検索されます。または、「私はあなたに本当に心を捧げました」という文も検索されます。

事務用品販売サイトで商品を検索する際に利用していたのですが、今回この問題に遭遇しました。 まずは試してみませんか?

試してみたらうまくいきました、ありがとうございます
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。