[Sitecore][solrインデックス]ファイルフィールドがインデックスされない
概要:
サイトコア9.2にアップグレードしてから、ファイルフィールドがインデックスされない問題のトラブルシューティングについてのクイックメモです。
———————————————————————————————
検証環境は次の通りです。
- Sitecore 9.2.0
[space size=”10″]
問題
サイトコア9.2にアップグレード,PDFファイルをダウンロードするリンクが表示されなくなりました。テンプレートをみるには、サイトコアのファイルフィールドを使用し、PDFのファイルを指定し、ダウンロードするようになっています。
[space size=”10″]
SolrAdminにてこの”Download PDF”ファイルをスキーマにて確認したところ、存在していないことをわかりました。
コードをみたところ、フィールドを追加する設定がちゃんと有りますし、
<fieldNames hint="raw:AddFieldByFieldName"> <field fieldName="download pdf" returnType="string" emptyString="emptyval" />
[space size=”10″]
”Raw values”にてフィールドの値を見るには、上記の設定で、テキストそしてインデックスされるはずです。
どこがの設定が間違っているのかなぁ戸惑ったところで、ディフォルトのサイトコア9.2にてどのようなの動作しているのかを比べればいいのではと思いました。
[space size=”10″]
サンプルをアイテムのテンプレートにてテスト用のファイルフィールドを追加し、
テスト用の値を設定して、
[space size=”10″]
”Populate Solr Managed Schema” を使って、マスターデータベースのスキーマを更新してから、マスターデータベースを再構築して、そして、Solrのサービスを再起動します。これで、TestFileがスキーマに追加されることを期待してながら、SolrAdminにて確認したところ、やはり追加されていない。
[space size=”10″]
以前のサイトコアのバージョンで別のお客さんのサイトサーチする際に、PDFのファイルの内容をテキストとしてインデックスする作業があったことを思い出して、カスタムPDFのファイルリーダーが必要なのかなぁと思った。ディフォルトのサイトコア9.2にて、ファイルリーダーの設定を見ると、ディフォルトのファイルたタイプはSitecore.ContentSearch.FieldReaders.NullFieldReader, Sitecore.ContentSearchを使用しています。これじゃスキーマに追加されていないのもおかしくないです。
[space size=”10″]
フィールタイプがファイルの場合はディフォルトのSitecore.ContentSearch.FieldReaders.DefaultFieldReaderを使うように変更して、”Populate Solr Managed Schema” を使って、マスターデータベースのスキーマを更新してから、マスターデータベースを再構築して、そして、Solrのサービスを再起動します。
[space size=”10″]
再度SolrAdminにて確認をしたところ、ファイルフィールドがスキーマに追加され、フィールの”Raw values”テキストとしてインデックスされたことを確認しました。
[space size=”10″]
原因とサマリー
結局、PDFファイルをダウンロードするリンクが表示されなくなった理由は、サイトコア9.2にアップグレードされ、ディフォルトのファイルフィールのタイプであるSitecore.ContentSearch.FieldReaders.NullFieldReaderが使用されていることで、ファイルタイプのフィールドがスキーマに追加されないことが原因でした。