Sitecore XPバージョン10.0以降、コンテンツ ツリー検索の挙動が変更されました。アイテムIDまたはパスを検索語句として使用する際、Sitecoreはデータベース(またはSitecoreのキャッシュ)からデータを取得しなくなりました。その代わり、検索インデックスに対するクエリが実行されます。(コンテンツのフル テキスト検索フィールドを使用して)アイテムのすべてのテキスト フィールドに対して検索が実施されるようになったため、以前のSitecore XPバージョンよりも多くの結果が返される可能性があります。
以前の挙動に戻すには、以下の手順を実施してください。
using Sitecore.Diagnostics;
namespace Custom.Pipelines.Search
{
internal class AbortIfDirectHitIsFound
{
public void Process(SearchArgs args)
{
Assert.ArgumentNotNull(args, "args");
if (args.Result.Categories.Any(category => category.Name == "Direct Hit"))
{
args.AbortPipeline();
}
}
}
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<search>
<processor type="Sitecore.Pipelines.Search.IDResolver, Sitecore.Kernel" patch:before="*[1]" />
<processor type="Sitecore.Pipelines.Search.PathResolver, Sitecore.Kernel" patch:after="*[@type='Sitecore.Pipelines.Search.IDResolver, Sitecore.Kernel']" />
<processor type="Custom.Pipelines.Search.AbortIfDirectHitIsFound, Custom.Assembly" patch:before="*[@type='Sitecore.ContentSearch.Client.Pipelines.Search.SearchContentSearchIndex, Sitecore.ContentSearch.Client']" />
</search>
</pipelines>
</sitecore>
</configuration>