Solr search(search_api_solr)モジュールでprivate領域のファイルにインデックスをつけるには?

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
junko_m's picture

初めて質問させていただきます。

Drupal 7.x、DKAN、Solr search (search_api_solr)モジュール、
Solr(5.4.1)を使って、サイトにアップロードしたドキュメントの全文検索を実現しようとしています。

パブリック領域へのアップロードしたファイルについては全文検索ができるようになったのですが、
ダウンロード数を集計しようと、アップロード先をプライベート領域に変更したところ、
Solrインデックスが作成できていないようで、検索ができなくなってしまいました。
(インデックス作成時に特にエラーは表示されません。)

そもそも、プライベート領域にアップロードされたファイルへのインデックス作成はできないのでしょうか?
それとも、プライベート領域を利用する際の設定が不足しているのでしょうか?

何かご存知の方いらっしゃいましたら、アドバイスをいただけませんでしょうか?
よろしくお願いします。

Comments

blauerberg's picture

確か、プライベートファイルシステム上のファイルをインデックス(検索)できないということはなかったと思います。

しかし、検索を実行するユーザーがそのプライベートなファイルへのアクセス権を持たない場合、検索にはヒットしない、という動きになります。

単にインデックスされていないのか、Drupal側のアクセス制御で弾かれているか切り分けてみるのがよと思いますので、Drupalからではなく、solr自体のadmin UIからファイル内のワードで検索してヒットするか、まずは確認してみてはどうでしょうか?

junko_m's picture

アドバイスありがとうございます。
solrからクエリをかけてみたところ、ヒットしていませんでした。
sites/default/files直下のファイルのみにインデックスが作成されているようです。

設定は以下のようになっています。
プライベートファイルの設定:
・Configuration > Media > File systemにおいて、[Private file system path]にパスを設定。
・sites/default/files/private というパスを設定、書き込み権限を設定。

コンテンツタイプの設定:
・Upload destinationを[Private files]に設定。

ファイルをアップロードすると[Private file system path]に設定したパスにファイルが格納されています。
drush コマンドにおいて、インデックスのクリアと作成を実行しています。

drupal側にfiles直下以外のディレクトリを認識させる方法のようなものがあるのでしょうか?

解決しました

junko_m's picture

設定が不足していました。
設定を再確認していたところ、
Solrのインデックス設定に、[プライベートファイルを除く]という項目がありました。

Configuration > Search and metadata > Search API > Solr Index
[Filters]タブ
 [File attachments] - [Exclude private files]
このチェックを外してインデックスを再作成したところ、Solrからのクエリにヒットするようになりました。

壁に行き当たってしまい、調査が全くはかどらなかったところ、切り分けのアドバイスをいただいたことで、設定を見直す、というところにたどりつくことができました。

ありがとうございました。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week