We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 21772
    • 69 Posts
    HyperFlexSeachFormを使いたくて、色々トライしていますが、
    日本語の検索が出来ません。 :’(

    検索にはAjaxSerchを使っているのですが、特定フォルダ(区分)を
    作成して、そのフォルダ内のドキュメントのみ検索したい、また、特定
    のユーザーグループのみに検索を許すなどが出来そうにもありませんでした。

    HyperFlexSeachFormはそのようなポイントをクリアしているようなので
    非常に魅力的なのですが、日本語のドキュメントの検索が出来ません。

    動作環境は MODx0.9.6、 HyperFlexSeachForm(3r2)、 PHP 5.2.2、 mysql5.0.37.
    サイトの文字コードは UTF-8です。

    現在日本語で検索すると下記のメッセージが表示されるか。
    There were no search results. Please try using more general terms to get more results.

    もしくは処理がタイムアウトします。 検索語句によってタイムアウト
    したり、しなかったりします。(その事から日本語処理に問題が
    ありそうなのはわかります。)

    英語のドキュメントのみを格納している区分フォルダを指定すると
    検索が正常に行なえますので、日本語のみの処理問題と思います。

    HyperFlexSeachFormはFlexSeachFormを拡張しているようなので、
    http://modxcms.com/forums/index.php/topic,3803.0.html
    のトピックを見つけて、色々試しているのですが、原因が分からず質問
    させて頂きました。

    だれか、使われている方はいないでしょうか?
    アドバイスを頂けると助かります。
      • 21772
      • 69 Posts
      報告遅くなりました。
      HyperFlexSeachFormですが、一応ある程度
      日本語環境で動作するようになりました。

      英語、PHPともによく分からないので、翻訳サイト
      を使ったりしながら質問した所。 作成者のBenjamin
      が新しいバージョンをリリースしてくれました。

      特定のユーザーグループのみ検索が出来るかなど、
      まだ試していないのですが。

      特定のフォルダ以下だけを検索するなどは、正常に
      動作しています。
        • 27086
        • 37 Posts
        noriさん、こんにちは。

        いつもはajaxsearchを使っているのですが、noriさんの投稿を見て今扱っている案件で試してみました。
        気が向いたから・・・という部分も大きいのですが、サクッと眺めてみるとajaxsearchよりも検索対象が広いみたいなので、その辺が有用なんでしょうか?ajaxsearchは内部的には検索者に権限のあるドキュメントに絞って検索していたはずです。

        さて、英語フォーラムで投稿されていてpagenateがうまくいかない件、こちらでも発生したため原因を探して確認しました。詳しくはあちらを見てみてください。ソースを見る限り言語にかかわらず同じなんじゃないかと思うのですが、どうなんでしょうか。

        こちらではストップワードが上手く働かないので(partialだからかな)、後ほどこの件でもコードを追ってみようと思っています。ストップワードが効くならばデフォルトに加えて、1文字のひらがなカタカナあたりも追加しておくと良いかなーと考えています。

        それでは。。。
          • 21772
          • 69 Posts
          shobuさん こんにちは。

          >サクッと眺めてみるとajaxsearchよりも検索対象が広いみたいなので
          >、その辺が有用なんでしょうか?
          検索対象が広いと言うより、細かいオプション指定ができるのが
          自分としては有用でした。

          HyperFlexSeachFormを使ってみようと思い立ったきっかけは、
          自分の作成したサイトの英語翻訳したページを作成したのが発端です。
          AjaxSeachでは特定のドキュメントフォルダを指定して、その中
          のドキュメントだけを検索するような、オプションが見つけられません
          でした。(見落としているだけかも..)

          また、今後自分の作成しているサイトにFAQなどのコンテンツも
          加えたいと考えていて、FAQだけを検索したいのに、サイト全体の
          コンテンツが検索されてはうっとうしいと思っていました。

          >pagenateがうまくいかない件
          pagenateに関しては、サポートフォーラムで問題になっていなかった
          事、またサポートフォーラムの投稿者のサイトなどを、サマリー情報
          よりいくつか見てみましたが、問題無くページ遷移動作していますので、
          文字コードとPHPの問題なのかなと思っています。
          動作を確認し問題なく動作していたたサイトは全てcharset=ISO-8859-1
          で作成されていました。

          自分なりの修正で、この部分は動作しているのですが、PHPが
          よく分かっていないので、shobuさんの修正の方が安心して使えます。 laugh

          ありがとうございます。



            • 27086
            • 37 Posts
            こんにちは。

            なるほど、親IDやtemplateで制限がかけられるみたいですね。

            私の修正は考え的にはnoriさんと変わらず、変数の中身が空でないかをチェックしているだけです。

            私が原因と考えたコード行は最近の後付じゃないでしょうか?他サイトは特に不都合がないので最新版でないだけとか。。。
            そうでないとなると、何らかの環境の違いで、関数の戻りがfalseだったり""が戻ったりしている事になってしまうような気がします。
            ただ、昨日ざっと眺めただけで、FlexSearchFormを調べたりしたわけでもなく、HyperFlexSeachFormを理解しきっていないので、作者の別の意図があったりするのかもしれません。本スレの流れを見てみたいと思います。