2013年5月8日水曜日

Force.com:添付ファイルの全文検索

ChatterにMS-Officeのファイルをアップロードし、ブラウザでログインして「検索」から探すとファイルの中身をちゃんと探してくれるのですが、APIからFINDを使ってもヒットせず苦労していましたが、解決策が見つかったのでメモ。

■ContentVersionにあった■

Chatterにアップロードしたファイルを全文検索で探し出したい。

とりあえず、ファイルがどこに格納されているかをコンソールでSOQLで探したところ、ContentVersionにそれらしいレコードが見つかりました。その結果を踏まえてEnterprise/WSCで以下のSOSLを実行したところ、うまく検索してくれました。

  FIND {語句} RETURNING ContentVersion (Id, FirstPublishLocationId, IsLatest, PathOnClient)

ここで、IsLatest = trueが最新版を示すフラグ、PathOnClientはファイル名です。FirstPublishLocationIdには関連するオブジェクトのIDが入っているので、たとえばChatterからアップロードした場合には、
  SELECT Id, Body FROM FeedItem WHERE Id = cvFirstPublishLocationId
てなことを書けば探し出せます。

■試行錯誤■

何もパラメータなしに
  FIND {語句} 
とすると一応全ファイルが対象になるはず。そうでなくとも
  FIND {語句} RETURNING FeedItem (Id, Body, CreatedDate)
などと書けばヒットする、はず。

でも、どっちもダメでした。

それとPDFもダメでした。日本語のPDFはほぼ全滅、英語版PDFもヒットしないことの方が多いという状況です。いろいろな文書ファイルで試してますが、Office 2007ファイルについては今のところ漏れなくヒットします。

マカーの私としては、PDFが対象外ってのはちょっと困るのですが…。

以上、ご参考になれば幸いです。

0 件のコメント:

コメントを投稿