ポーランド語のインデックス作成時にエラーを引き起こす可能性がある


解説

Sitecore XPでは、特定の言語用の動的フィールドが自動的に作成されます。Solr検索プロバイダーを使用してポーランド語版のアイテムをインデックスする場合、ログに次のようなメッセージが出力されることがあります:

9524 2015:06:25 14:52:03 
WARN Crawler : AddRecursive DoItemAdd failed - {6601373B-C31A-43D7-8DD8-6429ACA38298} Exception: SolrNet.Exceptions.SolrConnectionException Message: <?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"><int name="status">400</int><int name="QTime">98</int></lst>
<lst name="error"><str name="msg">

ERROR:
[doc=sitecore://master/{110d559f-dea5-42ea-9c1c-8a5df7e70ef9}?lang=pl-pl&amp;ver=1&amp;ndx=sitecore_master_index] unknown field 'title_t_pl'</str>
<int name="code">400</int></lst>
</response>

解決策

オプション 1

  1. ポーランド語のコンテンツに言語固有の分析が必要かどうかを決定します。Solrスキーマには、ポーランド語のコンテンツを分析するためのフィールド タイプ定義されていません。言語固有の分析が必要ない場合は、「text_general」タイプを使用できます。それ以外の場合は、例えば「text_da」のような既存の型を使用して、新しいフィールド型を作成します。言語固有の調整を行うには、Solrのドキュメントを確認してください。言語固有のフィールドタイプは、以下のようなものであるべきです。
    <fieldType name="text_pl" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StempelPolishStemFilterFactory"/>
      </analyzer>
    </fieldType>
  2. 新しい動的フィールドを作成します:
    <dynamicField name="*_t_pl" type="text_pl" indexed="true" stored="true" />

    または(言語固有のフィールド タイプを作成しない場合):

    <dynamicField name="*_t_pl" type="text_general" indexed="true" stored="true" />
  3. Solrスキーマに変更を導入する方法を決定します。変更は、Solrスキーマ ファイルに直接適用することができます。この場合、変更されたSolrスキーマですべてのSolrコアをリロードするか、Solrサーバーを再起動します。
  4. 更新されたSolrスキーマの情報を引き出すために、Solrサーバーを参照するSitecoreインスタンスを再起動します。

    注:Sitecoreを使用してSolrスキーマにデータを入力した場合、その変更は上書きされます。通常、このステップは新しい環境のデプロイ時、または製品の新しいバージョンへのアップグレード後にのみ実行されます。変更が誤って上書きされないようにしたい場合は、オプション2をチェックしてください。

オプション 2

また、Solrスキーマの変更は、コードによって導入することも可能です。

  1. 記事で紹介されている例を参考に、Solrスキーマのデータ入力ロジックをカスタマイズしてください:
  2. スキーマを再作成します。

注:

解決策で説明した手順を使用して、他の言語のサポートを追加することができます。