LuceneからSolrへの移動
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Lucene検索エンジンのサポートは、Sitecore 9.3以降に含まれなくなりました。Solr検索エンジンを使用できます。Solrは、Sitecoreインストールにデフォルトでインストールおよび設定されます。
このトピックでは、LuceneからSolrに移行するときに表示されるいくつかの違いについて説明します。
The LINQ API
LINQ APIを使用した一部のクエリでは、LuceneとSolrでわずかに異なる結果が得られます。
スタート
StartsWith LINQメソッドのSolr実装は、各単語の先頭の値と一致しますが、Luceneはフィールド値全体と一致します。
|
LINQクエリ |
Solrの結果 |
Luceneの結果 |
|---|---|---|
|
x.Name.StartsWith("world") |
世界 ワールドは素晴らしいです ハローワールド |
世界 ワールドは素晴らしいです |
エンデッドウィズ
EndsWith LINQメソッドのSolr実装は、各単語の末尾の値を照合しますが、Luceneはフィールド値全体を照合します。
|
LINQクエリ |
Solrの結果 |
Luceneの結果 |
|---|---|---|
|
x.Name.EndsWith("world") |
世界 ハローワールド ワールドは素晴らしいです |
世界 ハローワールド |
大文字と小文字を区別する文字列比較
Solrがプレーンテキストフィールドタイプ ( stringやtextなど) を検索する場合、通常は大文字と小文字が区別されます。例外は、一部のシステムフィールド ( _fullpathや _nameなど) です。
|
LINQクエリ |
Solrの結果 |
Luceneの結果 |
|---|---|---|
|
.Where(x => x.TemplateName == "sample item") |
「サンプルアイテム」テンプレートに基づくアイテムを返さない |
「サンプルアイテム」テンプレートに基づいてアイテムを返します |
アイテムレベルのブースト
アイテム レベルのブースティングは、Solr検索プロバイダー (Sitecore 9.1.0以降) ではサポートされていません。Solrのリリースノートには、インデックスタイムブースティングはSolr 7以降でサポートされなくなったと記載されている。詳細についてはhttps://lucene.apache.org/solr/guide/7_2/major-changes-in-solr-7.htmlをご覧ください。つまり、Sitecore 9.1.0以降では、インデックスタイム ブースティングはアイテムまたはフィールド ブースティングではサポートされていません。
Sitecore Solrの互換性テーブルも参照してください。
設定の違い
Solr検索プロバイダーとLucene検索プロバイダーの構成方法には、いくつかの違いがあります。組み込みのSitecoreフィールドでは移行は簡単ですが、独自のフィールドを設定に追加する場合は、違いに注意する必要があります。
フィールドの種類
Solrは、Luceneよりも多くのフィールド・タイプをサポートします。Luceneでは、フィールドは文字列または数値のいずれかですが、Solrはsolr.DatePointField、solr.FloatPointField、solr.TextFieldなどのより具体的な型をサポートしています。
たとえば、チェックボックスフィールドがあり、ブールコンバーターがない場合( bool.ToString() はインデックスに送信される値です)、このフィールドをファセットクエリで使用すると、Luceneではカテゴリ名として0と1が得られますが、Solrではfalseとtrueが取得されます。
詳細については、Solrの公式ドキュメントを参照してください。
Solrスキーマ
Luceneでは、フィールド設定を索引に追加するときにフィールド構成を制御できますが、Solrでは、ドキュメントの追加を開始する前にスキーマを指定する必要があります。
Sitecoreのコントロール パネルには、Solrで実行するために必要なスキーマをアップロードできるPopulate Solr managed schemaツールがあります。このツールは、インデックス作成を開始する前に少なくとも1回使用する必要があります。Sitecoreインストール フレームワークを使用する場合、スキームはデプロイ中に入力されます。
そのため、スキーマ関連のすべての設定がフィールド マップ設定から削除されました。フィールドマップですべてのフィールドまたはフィールドタイプに値を設定する必要がなくなりました。代わりに、フィールドマップのフィールド/フィールドタイプをSolrスキーマのフィールド/動的フィールドの1つに一致させます。
フィールドマップのフィールド/フィールドタイプ設定のreturnType属性を、Solrフィールドマップで定義されたtypeMatchノードのいずれかに設定します。

Solrのセットアップに関する詳細情報が記載された ウォークスルー があります。
Solrでのフィールド名変換
すべてのtypeMatchノードは、フィールド名に適用されるパターンを使用して、Solrスキーマで定義された動的フィールドの1つに対応します。fieldNameFormat属性は、このパターンを設定します。インデックス作成時には、フィールド名はパターンに従って書式設定されます。たとえば、上記の例では、fieldNamFormat属性の値に基づいて、titleフィールドはtitle_sとして書式設定され、createdフィールドはcreated_tdtとして書式設定されます。
インデックス作成時。Solrは、フィールド名をスキーマで定義されたフィールドと照合します。一致するものが見つかった場合、Solrはそのフィールドの構成を適用します。数式が見つからない場合、Solrはフィールド名を動的フィールド・パターンと照合します。

この例では、動的フィールドが一致しています。これらのフィールドはそれぞれstring型とpdate型であるため、Solrはこれらの型の構成を追加されたフィールドに適用します。

通常、Populate Solr managed schemaツールが提供する動的フィールドは、必要なすべてのフィールド設定です。ただし、非常にまれな状況では、既存のフィールドとは異なる構成でスキーマにフィールドまたは動的フィールドを追加する必要がある場合があります。これを行う方法の1つは、Solrでスキーマを直接変更することですが、後でスキーマ設定ツールを実行すると変更が失われることに注意してください。代わりに、Solrスキーマのカスタマイズを行う新しいプロセッサを挿入して、contentSearch.PopulateSolrSchemaパイプラインを変更することをお勧めします。
Solrフィールド名解決の使用 に関する詳しい情報があります。
一般的には、typeMatch構成の柔軟性が十分でない場合にのみスキーマを変更することをお勧めします。