人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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文法だけの問題だと思うのですが。

●質問者: jouno
●カテゴリ:コンピュータ
✍キーワード:BODY config Pages PHP SELECT
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● いのくに
●40ポイント

http://cgi.t.daito.ac.jp/~t038218/webdb/mysql_5.html

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

http://www.hippo2000.info/perl/myfull.htm

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

◎質問者からの返答

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

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


2 ● いのくに
●40ポイント

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 データベース内の文字コードは統一する必要があります。

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ