We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10105
    • 51 Posts
    不安なのでどなたかよろしくお願いします。

    AjaxSearch は、初期のままだと最低3文字以上でないと検索できなかったので

    assets/snippets/ajaxSearch/classessearch.class.inc.php 16行目

    define(’MIN_CHARS’,2); // minimum number of characters admitted in case of a wrong &minChars parameter

    と、

    リソース/リソース管理/スニペット/AjaxSearch 内の

    // &minChars [ int ]
    // Minimum number of characters to require for a word to be valid for searching.
    // MySQL will typically NOT search for words with less than 4 characters (relevance mode).
    // If you have $advSearch = ’allwords’, ’oneword’ or ’nowords’ and a three or
    // fewer letter words appears in the search string, the results will always be 0.
    // Setting this drops those words from the search in THAT CIRCUMSTANCE ONLY
    // (relevance mode, advsearch = ’allwords’, ’oneword’ or ’nowords’)
    $cfg[’minChars’] = isset($minChars) ? intval($minChars) : (isset($__minChars) ? intval($__minChars) : 2);


    を、3→2に変更してみました。

    その結果2文字でも検索可能になったのですが、何か補足、指摘等あればよろしくお願いします。


      • 6350
      • 421 Posts
      僕もいつかは変更しようと思っていたところです。おかげさまで手間が省けました。

      Google Yahoo 検索でも 1文字で検索してくれるので日本語検索では 2文字でも多いくらいですよね。 wink
        • 36592
        • 970 Posts
        スニペットのパラメータに「&minChars=`2`」と指定するだけではダメなんですか?
          • 6350
          • 421 Posts
          Quote from: tkfm at Feb 02, 2009, 09:10 PM

          スニペットのパラメータに「&minChars=`2`」と指定するだけではダメなんですか?
          あっ、そのほうが利口そうですね。

          コードを追うより先に、どんなパラメータが使えるかを調べるべきだということを再認識することができました。 huh
            • 10105
            • 51 Posts
            Quote from: tkfm at Feb 02, 2009, 09:10 PM

            スニペットのパラメータに「&minChars=`2`」と指定するだけではダメなんですか?

            実は、tkfm さんが以前コメントされていた、http://modxcms.com/forums/index.php?topic=29420.0に辿り着きまして
            試させてもらったのですが、数字を大きくする分にはうまく動いてくれたのですが、数字を小さくしても2文字以下での検索ができませんでした。

            最低検索文字数の設定と、検索文字数の指定の違いなのかなぁと思っているのですが…
              • 6350
              • 421 Posts
              Quote from: freakale at Feb 02, 2009, 09:45 PM

              最低検索文字数の設定と、検索文字数の指定の違いなのかなぁと思っているのですが…
              ひとつだけ見落としがあったようです。
              search.class.inc.php の 926行目で制限されているようなので MIN_CHARS を変更しない限りそれ以下の文字数指定は無視されているようです。
                  if (isset($cfg[’minChars’])){
                    if ($cfg[’minChars’] < MIN_CHARS) $cfg[’minChars’] = MIN_CHARS;

              define(’MIN_CHARS’,2); の方は変更しないと、パラメータ渡しだけではだめみたいです。
                • 36592
                • 970 Posts
                そうでした。決められてる最低値以下にはできないんでした。スミマセン。 tongue
                  • 26012
                  • 324 Posts
                  Quote from: freakale at Feb 02, 2009, 08:15 PM

                  // &minChars [ int ]
                  // Minimum number of characters to require for a word to be valid for searching.
                  // MySQL will typically NOT search for words with less than 4 characters (relevance mode).
                  // If you have $advSearch = ’allwords’, ’oneword’ or ’nowords’ and a three or
                  // fewer letter words appears in the search string, the results will always be 0.
                  // Setting this drops those words from the search in THAT CIRCUMSTANCE ONLY
                  // (relevance mode, advsearch = ’allwords’, ’oneword’ or ’nowords’)
                  $cfg[’minChars’] = isset($minChars) ? intval($minChars) : (isset($__minChars) ? intval($__minChars) : 2);

                  を、3→2に変更してみました。
                  恐らく、freakaleさんが気にしてるであろう上記コメントが私も気になって少し調べてみました。
                  MySQLの機能や性能、サーバへの負荷などに関係するようで、作者が3にしているのには、
                  それなりの経験則と根拠があるようで、何だか嫌らしい気がします。
                  xoopsなどでも同じ質疑があるようです。
                  http://xoopscube.jp/forum/5833?comment_id=18576
                  http://xc-tokai.net/modules/smartsection/item.php?itemid=5
                  上記2つの記事を勘案すると、「できなくはないが、サーバに負荷が掛かったり、性能が落ちるよ」ってことみたいです。
                  でも、UTF環境での全角2文字は 4 (6)バイトだから、許容範囲内という気もするし・・・どうも釈然としません。
                    • 6350
                    • 421 Posts
                    Quote from: sama55 at Feb 02, 2009, 10:54 PM

                    上記2つの記事を勘案すると、「できなくはないが、サーバに負荷が掛かったり、性能が落ちるよ」ってことみたいです。
                    でも、UTF環境での全角2文字は4バイトだから、許容範囲内という気もするし・・・どうも釈然としません。
                    たぶん、上記のような解釈は英語圏と日本語圏のちがいで単語の持つ意味が英語圏では3文字以上ないと単語としての意味を成さないというのが本当の理由ではないでしょうか。英語をそのまま日本語訳すると解釈が変わってきます。
                    WordPress で試してみたところ 1文字から検索できます。日本語化が進んでいることがよくわかります。Joomla では3文字以上と表示されます。

                    それとは別に
                        if (isset($cfg[’minChars’])){
                          if ($cfg[’minChars’] < MIN_CHARS) $cfg[’minChars’] = MIN_CHARS;

                    の部分で検索ボックスの下に出てくるプルダウンメッセージにでも「パラメータが無効です」のように表示してほしいですね。

                    エラーメッセージとか表示せずにこっそり書き換えられると、ここまで確認する人は少ないだろうし「どうしてだろう」で終わっている人も多いかもしれませんね。

                    ぼくもまだまだスニペットコードに書かれた英文の説明を理解するだけでも先に進めない状態です。昨年 MEGUさんの HPだけを頼りに勉強を進めていた時期、突然HP が閉鎖され途方にくれたもんです。たとえ本人にどのような○×事情があろうと HP の閉鎖だけはやめてほしいと。その分日本公式サイトの早期の充実を期待する気持ちも大きくなってきます。

                    ただし公式サイトの日本語化にかかわる主要なメンバーがにっくさんと MEGU さんだけだと先が永そうですぅ。
                    先ににっくさんから要望のあった翻訳ボランティアの募集 sama55 さん手を上げてましたが進んでるんでしょうか。
                      • 10105
                      • 51 Posts
                      みなさんどうもありがとうございました。 smiley
                      おかげさまで、すっきりしました。phpがどういうものなのかも、なんとな~くですが、わかったような・・・

                      今、移行作業している某企業サイトは、容量も大きくないですし、アルファベット2文字で検索することも無いだろうと思われるので
                      これで様子を見てみようと思います。

                      何か問題があれば検索すれば見つかるだろうと、簡単に考えていたのですが
                      みなさんのような有志がいてこそなんですよね。本当に頭が下がります。

                      少しでもMODxの発展に役立つような情報、質問を提供していきますんでよろしくです rolleyes