フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: [Cannnot Fix] 検索
DEKO
管理者
投稿数: 2655
[Cannnot Fix] 検索
on: 2013/04/06 17:27 Sat

このフォーラムでは

  • 4 文字以下の単語の検索はできない
  • 日本語は基本的にマッチしない (妙なマッチをする)

という問題があります。レンタルサーバでは根本的な解決が難しいです。

# "MySQL / MATCH~AGAINST / 全文検索" で、ピンとくる方もいらっしゃるでしょう。

DEKO
管理者
投稿数: 2655
Re: [Cannnot Fix] 検索
on: 2013/04/07 13:12 Sun

引用 DEKO on 2013/04/06 17:27 Sat
このフォーラムでは

  • 4 文字以下の単語の検索はできない
  • 日本語は基本的にマッチしない (妙なマッチをする)

 
…そういう事なので、タイトルの先頭には [BDE] のような検索のためのタグを付ける事をオススメします。

DEKO
管理者
投稿数: 2655
Re: [Cannnot Fix] 検索
on: 2013/04/07 16:44 Sun

LIKE 検索にすればヒットするのは解ってるのですが、それやっちゃうとサーバに負担かけちゃいますから、下手すりゃ利用停止になっちゃうのです。

DEKO
管理者
投稿数: 2655
Re: [Cannnot Fix] 検索
on: 2013/04/07 18:33 Sun

例えば、"Delphi の製品情報" というのがあったとします。この文字列中で検索してみます。

"Delphi": OK
"製品情報": NG

MySQL の全文検索は空白等の区切り文字がある言語においてしか正しく動作しません。検索文字列が、

"の製品情報": OK

これだとヒットします。つまり、日本語はどこまでも区切り文字がない単語として扱われちゃうのです。
(句読点等は流石に区切り文字として扱われますけどね)

DEKO
管理者
投稿数: 2655
Re: [Cannnot Fix] 検索
on: 2013/04/07 18:56 Sun

4 文字制限の件は、MySQL の初期設定がそうなっているからです。
この制限を解除するには、

  • my.cnf の ft_min_word_len の値を書き換える
  • MySQL を再起動する

企業向けじゃないレンタルサーバでは無理です。

これを前提に考えてみると "C++Builder" は "Builder" で検索されている事がお解かり頂けると思います。
("C" は 1 文字の単語なので無視される、+ も区切り文字なので無視される)

DEKO
管理者
投稿数: 2655
[とりあえず Fix] 検索
on: 2013/04/07 19:15 Sun

とりあえず、投稿がまだ少ないので LIKE 検索にしておきました。

  • 空白で複数の単語を区切って検索する事はできない (半角 SP 区切りで AND 検索できます)
  • 日本語の単語でもヒットする
  • 検索結果の "関連性" が常に 100% になる (そりゃそうだ)

一長一短ですね。投稿数が多くなってきたら元の処理に戻します。

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.031 sec.