We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 32535
    • 58 Posts
    wispと申します。
    今現在、AjaxSearch1.5を使用しております。

    サイト内検索フォームを設置したいドキュメントに
    [!AjaxSearch!]
    と記述しているのですが、テキストをフォームに入力して、検索ボタンを押すと、
    常に「There were no search results. Please try using more general terms to get more results.」
    という文章が表示されるのみで、アルファベット、日本語ともに、検索結果は上記の文章になってしまい、
    サイト内検索としての機能を果たしません。
    どなたか解決策がわかる方がおりましたら、ご教授下さいますようお願い致します。

    ちなみに[!AjaxSearch!]を設置したドキュメントはxhtmlで記述しています。サーバーはロリポップです。
    よろしくお願い致します。
      • 36592
      • 970 Posts
      AjaxSearchはあまり使い込んでいないのですが...

      間違いなく存在するはずのキーワードで検索をしてもヒットしない...ということなんですか。
      日本語だけヒットしないならキャラクタコードの問題のような気がしますが...?
      DB内の日本語は文字化けしたりしてないですよね?

      とりあえずAjaxSearchの1.5っていうのは古いので、SVN版の1.8.1にアップデートしてみては如何でしょうか?
        • 19592
        • 56 Posts
        ロリポップでAjaxSearchが動かなかったときの解決法です。
        http://modxcms.com/forums/index.php/topic,19799.0.html

        以前投稿したものですが参考にどうぞ。

        レンタルサーバー1 ロリポップ MySQL 4.0.24
        ModX 0.9.6.1 (0.9.6でも同じだと思います) 運用文字コード UTF-8
        AjaxSearch 1.6 (インストールのまま。スニペットの見出しには1.5になってますがphpには1.6とあります)

        わたしはロリポップサーバーではAjaxSearch 1.6のままつかってますが、AjaxSearch はアップデートした方が検索精度などもよくなってますので、アップデートをおすすめします。 kiss
          • 32535
          • 58 Posts
          ajaxsearchの更新に関する、初歩的は質問で恐縮なのですが。

          ajaxsearch1.8はファイルが多く、どのファイルのテキストをコピーして、modxの管理画面上のスニペットのプログラムにペーストすれば良いのかがわかりません。

          ajaxsearch1.8をお使いの方がいられましたらご教授下さい。
            • 32535
            • 58 Posts
            1.7のバージョンで動作を確認できました。
            ですが、一定以上の文字数でなければ検索できません。

            具体的には、日本語が2文字以上、アルファベットが4文字以上を検索フォームにスペースなしで入力しなければ、結果が「There were no search results. Please try using more general terms to get more results.」となってしまいます。
            。
            どなたかアドバイスよろしくお願い致します。
              • 36592
              • 970 Posts
              Quote from: wisp at Oct 11, 2008, 06:44 AM

              具体的には、日本語が2文字以上、アルファベットが4文字以上を検索フォームにスペースなしで入力しなければ、結果が「There were no search results. Please try using more general terms to get more results.」となってしまいます。
              それって仕様なんじゃ無いでしょうか?

              &minCharsというパラメータがあって、そのデフォルト値が「4」です。
              &minChars=`2`とかにすれば2バイトでサーチするんじゃないかと思いますが、
              あまり小さい値だと想定外のところでヒットしまくるんじゃないかと思います。
              日本語だと漢字1文字でヒットしちゃいますしね。

              AjaxSearchのソースコード中に&minCharsパラメータの説明としてこのような記述があります。

              // 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’)
              MySQLにはあまり詳しくありませんが、この設定をデフォルトの「4」より小さくするのは
              あまり宜しくないように読めます。
                • 32535
                • 58 Posts
                &minChars で設定できました。
                ありがとうございました。
                  • 32535
                  • 58 Posts
                  ちなみに検索結果の表示方法(項目やレイアウトなど)をカスタマイズするには、直接プログラムを改造するしかないのでしょうか?
                    • 36592
                    • 970 Posts
                    assets/snippets/ajaxSearch/includes/templates.inc.php をご覧下さい。
                      • 32535
                      • 58 Posts
                      編集できました。ありがとうございました。

                      ajaxsearchのハイライトの機能で少し疑問に思ったのですが、
                      検索した単語が一つのドキュメント内に、複数箇所含まれている場合、同じ文字なのにハイライトされる文字とされない文字が、両方できてしまうんですが、なぜでしょうか?