none
Windows Searchにおける.docと.docxでの全文検索結果の違いについて RRS feed

  • 質問

  • 初めてお世話になります。わかりづらい点などあるかもしれませんが、どうぞよろしくお願いいたします。

    Wordファイルの拡張子の違いによって全文検索の結果に違いが見られたため、その理由と対処方法があれば教えていただきたく、よろしくお願いいたします。

    例えば「2008年」とWordファイル内に記載して拡張子「doc」と「docx」でそれぞれ保存をします。その2ファイルを含むフォルダ上で「2008年」というキーワードで検索をするとdocは検索できるのにdocxは検索できません。

    質問: 上記ファイルの場合、「2008」というワードで検索するとdocとdocx両方が検索できますが、「2008年」というワードで検索するとdocしか検索されません。(docx内には2008年という記載があるにも関わらず。) 検索キーワードによって、docとdocxの検索結果に差異が出る理由を知りたいです。 

    以上 よろしくおねがいします。

    2014年7月4日 2:39

回答

  • ファイル形式が大幅に異なるので、iFilterも別なのでしょう。しかし、文字列から語句に分解するやり方は変わらないでしょう。iFilterごとに違うと問題でしょう。共通化されているのでは。そうでなくても、doc用のソースを流用してdocx用を作るでしょうから、変わらないでしょう。違いはテキストの格納単位にあるのでは、と想像。docはパラグラフ単位。docxはパラグラフ単位の中に更に小さい単位(英数字、日本語は別単位に)で。「文字列から語句に分解する」処理に渡す単位が、docがパラグラフ単位でdocxがもっと小さい単位。と想像ですけど。

    想像の上での想像ですけど、docxもパラグラフ単位に「文字列から語句に分解する」処理に渡すべきでしょう。障害として報告して、修正するようMSに要求してみたら。

    • 回答としてマーク yukiharumi 2014年7月9日 6:02
    2014年7月8日 5:19

すべての返信

  • yukiharumi さま よろしく。

    ファイルの中での保存形態が、.doc はバイナリ(ソフト独自)、.docx は XML の圧縮(ZIP 方式)と異なっています。
      .docx の XML については以下をご覧下さい。
        Office Open XML  http://ja.wikipedia.org/wiki/Office_Open_XML
    この時、文字をエンコードといって、数字や英数記号に変えて保管しています。(イメージです、不正確な表現ですが...)
    検索で指示・指示する文字も、その裏側では、同じ作業を経ます。
    2008 の様な半角文字は、どのエンコードでも同じ結果を得られますが、
    全角文字はエンコードによって、所謂、文字化けをしたりします。
    エンコードが同じなら保管している文字も同じですが、これが異なると別の文字に解釈されてしまう訳です。
    言い換えれば、検索欄で指定した 2008年 の文字の解釈は、
    .doc ファイルの中の 2008年 の文字解釈と一緒で、
    .docx ファイルの中の 2008年 は,半角部分の 2008 は同じでも、年 の部分(漢字)を含めると 別の解釈になっている という事で。
    こんな説明で分りますか。

    対処方法を忘れていました。追記します。
    双方のエンコード形式が異なる前提で書きます。
    もし、可能なら、双方のエンコード形式を同じにして、上書き保存なさっては如何ですか。



    2014年7月4日 3:36
  • 「2008」の検索結果で、詳細表示に変えて、概要カラムと自動要約カラムを表示すると、どんな風ですか?
    2014年7月4日 7:24
  • 大変わかりやすい説明をありがとうございます。「2008」と「2008年」で検索結果に違いが出る意味が少しわかってきました。

    対処方法についてもう少し教えていただけますでしょうか。「双方のエンコード形式を同じにして、上書き保存」と記載頂きましたが、Wordでdocとdocxのファイル形式はそのままに、エンコード形式を同じにする、というやり方について色々調べてみたのですがよくわかりませんでした。

    それぞれのWordファイルのエンコード形式がどうなっているかを確認し、かつエンコード形式を明に選択する手順について、もしご存知でしたらお教え願います。(ファイル形式はdoc、docxのままの利用を想定しています。)

    2014年7月7日 5:37
  • ご対応ありがとうございます。「2008」の検索結果で概要カラムと自動要約カラムを表示させるとdoc、docxの概要カラムと自動要約カラムにすべて同じ内容が表示されます。内容はコンテンツの文字列で、「2008」部分の文字背景色が反転した状態です。

    一方「2008年」の検索結果ですとdocのみ表示され、その概要カラムは空の状態、自動要約カラムは「2008年」部分の文字背景が反転した状態で表示されます。

    画像がアップできず申し訳ありません。文章での記載でわかりづらいかもしれませんが、ここから何かわかることがありましたら、引き続きよろしくお願いいたします。

    2014年7月7日 5:48
  • 2008   年

    で検索すると?

    docxだけ?

    2014年7月7日 6:31
  • 引き続きありがとうございます。

    「2008」と「年」の間にスペースを入れたキーワードで検索、ということでしょうか。

    上記のように検索するとご指摘の通りdocxだけが検索されました。 

    2014年7月7日 6:53
  • つまり、

    docでは、2008年を語句に分けると、2008年。

    docxでは、2008年を語句に分けると、2008と年。

    検索boxでは、2008年を語句に分けると、2008年。

    docとdocxで2008年の格納構造が違うのでしょう。

    docでは、"2008年"のまま。

    docxでは、2008年を、<tag1>2008</tag1><tag2>年</tag2>みたいに。

    両方のケースを検索するには、面倒ですけど、

    (2008 AND 年) OR 2008年

    2014年7月7日 7:08
  • yukiharumi さま 拝見しました。

    作業の前に、以下の確認と前作業を行って下さい。
    ふたつのファイルが別フォルダにある場合、各々のフォルダに対して同じ設定になっているか否か、と
    一応、インデックス再構築して見て下さい。

    インデックス化される場所の追加や削除はどうすればいいですか
    インデックス化されたフォルダーのファイルが検索結果に表示されないのはなぜですか
    http://windows.microsoft.com/ja-jp/windows/improve-windows-searches-using-index-faq#1TC=windows-7
    インデックス再構築
    http://windows.microsoft.com/ja-jp/windows7/change-advanced-indexing-options

    これでも、駄目な場合、先に書いた様に、エンコードの変更を考えます。
    最も確実なのは、全て、フラットテキスト形態の .txt に変えて、別途、別フォルダに保存です。
     例: Bunsyo.doc > Bunsyo.doc.txt  Bunsyo.docx > Bunsyo.docx.txt
    この場合、元文書の外字や特殊記述が検索不可になる恐れがありますが、word で変換時に確認が出来ると思います。
    名前をつけて保存 で、ファイルの種類:書式なし、日本語(Shift-JIS) 辺りが一般的でしょうか。
     ファイルを保存するときにエンコード方法を選択する
    http://office.microsoft.com/ja-jp/outlook-help/HA010121249.aspx

    上書き保存についてですが、実は、私、word 使ったことの無い珍しい口です。
    色々、検索して見ると、利用フォントに応じてエンコードを変えている節もありますが、
    基本は Unicode とあります。(上のリンク参照)
    メイリオは Win7 既定のフォントですから Unicode、逆に Shift-JIS では MS Gothic と表記されていますので、フォントをこれに変えてみたら変わりますか。
    (試験的に別ファイルで保存の上、検索を試して見て下さい。)

    尚、参考までに、元のふたつのファイルではフォントの指定はどうなっていますか。

    2014年7月7日 9:43
  • データファイルの側というより、利用している ifilter が異なるので、おそらくその動作の違いがあるのだと思います。

    Office 97-2003 形式の ifilter : offfilt.dll

    Office 2007 以降の形式の ifilter : offfiltx.dll


    hebikuzure

    2014年7月7日 13:14
  • ウィンドウズスクリプトプログラマ様 ありがとうございます

    やはりdocとdocxで格納のされ方が違うことによって検索結果に影響が出るのですね。検索方法としてご提示いただいた方法で確かにdocとdocxの両方を検索することが出来ました。毎回いろいろなユーザにこの方法での検索を徹底するのは、コメント頂いた通り少しハードルが高いかもしれませんが、運用で両方を検索するための情報として大変参考になります。ありがとうございます。

    2014年7月8日 2:46
  • ShiroYuki_Mot様 引き続きありがとうございます。

    docとdocxについては同じフォルダに格納されているため設定に差異は無いと考えます。またインデックスの再構築につきましては既にトライしてみましたが結果は同じでした。

    またエンコードについてですが、コメント頂きました通り 基本はUnicodeでこれもdocとdocxで違いは無いのかな、と私自身も考えておりました。元ファイル2つのフォントはMS明朝です。これについてメイリオやMS Gothic等いくつかフォントを変えたファイルで試してみたのですが、結果に違いはありませんでした。

    インデックス並びにエンコードについていろいろ調べてくださり、ありがとうございます。

    2014年7月8日 2:51
  • hebikuzure様、ありがとうございます。

    iFilterの違いがやはり影響しているのでしょうか。コンパネからインデックスのオプション画面で拡張子ごとにフィルタを確認してみましたが確かにdocとdocxで異なるフィルタとなっているようです。

    記載いただいたそれぞれのiFilterの動作の違いや仕様についてMicrosoft社から何か情報が出ているか調べてみたもののそれらしいものを見つけることができませんでした。もし詳細情報等のURLなどご存知であればお教えいただければ幸いです。

    2014年7月8日 3:00
  • ファイル形式が大幅に異なるので、iFilterも別なのでしょう。しかし、文字列から語句に分解するやり方は変わらないでしょう。iFilterごとに違うと問題でしょう。共通化されているのでは。そうでなくても、doc用のソースを流用してdocx用を作るでしょうから、変わらないでしょう。違いはテキストの格納単位にあるのでは、と想像。docはパラグラフ単位。docxはパラグラフ単位の中に更に小さい単位(英数字、日本語は別単位に)で。「文字列から語句に分解する」処理に渡す単位が、docがパラグラフ単位でdocxがもっと小さい単位。と想像ですけど。

    想像の上での想像ですけど、docxもパラグラフ単位に「文字列から語句に分解する」処理に渡すべきでしょう。障害として報告して、修正するようMSに要求してみたら。

    • 回答としてマーク yukiharumi 2014年7月9日 6:02
    2014年7月8日 5:19
  • どこで聞いたのかははっきり覚えてないですが、wordbreak 自体にも手を入れていると聞いたので、その影響もあると思います。

    いずれにせよ doc 用と docx 用で結果が異なる事に問題が大きいのであれば、修正リクエストを出すのはありだと思います。


    hebikuzure

    2014年7月8日 6:06
  • ウィンドウズスクリプトプログラマ様 ありがとうございます

    確かに同じWordであればiFilterでの処理も共通化されていそうなイメージがありました。docとdocxで同じ検索結果が得られるのがベストなのですが、そうでなければその原因を知りたいと考えておりますので、MSへ報告し原因について問い合わせてみることにしたいと思います。

    色々とコメント頂きましてありがとうございました。問題を切り分けてMSへの問い合わせ内容を精査するところまでいけたので大変助かりました。回答としてマークさせていただきます。

    2014年7月9日 6:02
  • hebikuzure様 ありがとうございます。

    docとdocxで結果が異なると困る、というよりはその原因について知りたいと考えますので、MSへ問い合わせしたいと思います。

    iFilterについてヒントを頂けまして大変助かりました。ありがとうございました。

    2014年7月9日 6:03