LuceneからSolrへの移動

Version:
日本語翻訳に関する免責事項

このページの翻訳は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がプレーンテキストフィールドタイプ ( stringtextなど) を検索する場合、通常は大文字と小文字が区別されます。例外は、一部のシステムフィールド ( _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.DatePointFieldsolr.FloatPointFieldsolr.TextFieldなどのより具体的な型をサポートしています。

たとえば、チェックボックスフィールドがあり、ブールコンバーターがない場合( bool.ToString() はインデックスに送信される値です)、このフィールドをファセットクエリで使用すると、Luceneではカテゴリ名として01が得られますが、Solrではfalsetrueが取得されます。

詳細については、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構成の柔軟性が十分でない場合にのみスキーマを変更することをお勧めします。

この記事を改善するための提案がある場合は、 お知らせください!