function FullTextSearch($phrase) { return $this->LoadAll(”select * from ”.$this->config[”table_prefix”].”pages where latest = ’Y’ and match(tag, body) against(’”.mysql_escape_string($phrase).”’)”); }日本語がとおるように中間一致にしたいのですが、どうやればいいでしょうか。調べればすぐわかるはずなのですが、どこから手をつけていいのかわからないのでお願いします。php+mysqlでtagとbodyというレコードに$phraseという語が含まれているかどうか調べる関数です。LoadAll関数は多分気にしないでsql文法だけの問題だと思うのですが。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:inokuni No.1

回答回数1343ベストアンサー獲得回数21

ポイント40pt

MySQLで日本語全文検索を行うためには、まず、形態素解析やN-gramによって、文字列をワードごとに分割して、スペースで区切り、さらに、16進数文字に変換したりして、あたかも日本語ではないかのように装う必要があります。

個人的には頻度順検索はできませんけど、素直に like ’%$phrase%’ が手軽だと思います。(笑)

id:jouno

えーと、いちおう調べたんですが、基礎の基礎がわからない状態なのです。likeをつかうとして、具体的にどう書き換えればいいのでしょうか。

えーとand tag like ’%$phrase%’はわかるんですけど、bodyからもさがすので、えーと、見苦しいですけどさらにand body likeってかけばいいのでしょうか。

2003/06/13 02:43:47
id:inokuni No.2

回答回数1343ベストアンサー獲得回数21

ポイント40pt

http://www.mysql.com/

MySQL :: The world's most popular open source database

function FullTextSearch($phrase) {

return $this->LoadAll(”select * from ”.$this->config[”table_prefix”].”pages where latest = ’Y’ and ( tag like ’%”.mysql_escape_string($phrase).”%’ or body like ’%”.mysql_escape_string($phrase).”%’)”);

}

尚、 $phrase と MySQL データベース内の文字コードは統一する必要があります。

id:jouno

ありがとうございます。やはり重複して書かないといけないのですね。早速試してみます。

2003/06/13 02:47:48

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません