Ich habe ein berechnetes Feld, das Informationen aus den Unterelementen eines Elements übernimmt und sie in ein neues Feld auf dem Element verknüpft.Sitecore 8.2 Lucene-Suche indexiert nicht alle Begriffe in einem berechneten Feld
Wenn ich durch den Debugger gehe, kann ich sehen, dass das berechnete Feld die richtige Information zurückgibt. Wenn ich die Indizes überprüfe, die von Sitecore unter Verwendung Luke erzeugt werden, kann ich das berechnete Feld mit den korrekten Werten auch sehen. Wenn ich jedoch eine Suche mit Luke (oder in Sitecore) nach einem Begriff im berechneten Feld durchführe, werden nicht immer alle Dokumente zurückgegeben, die diesen Begriff enthalten.
Ich glaube, dass dies mit Artikeln mit mehreren Sprachversionen verwandt sein kann. Zum Beispiel hat eines der Elemente eine niederländische Version und eine serbische (lateinische) Version. Sie enthalten beide das Wort "vooderlen" in ihrem Inhalt. Aber wenn ich nach diesem Begriff suche, wird nur das serbische Dokument zurückgegeben. Wenn ich nach "assisteert" suche, werden beide Dokumente zurückgegeben. Ich bin mir nicht sicher, warum einige Begriffe ignoriert werden.
Hier ist der entsprechende Code:
public class ChildContent : AbstractComputedIndexField
{
public override object ComputeFieldValue(IIndexable indexable)
{
Assert.ArgumentNotNull(indexable, "indexable");
Item item = indexable as SitecoreIndexableItem;
if (item == null)
{
return null;
}
// Only compute child content for Detail Layout templates
string detailLayoutTemplateId = Settings.GetSetting("DetailLayoutTemplateId");
if (item.TemplateID.ToString() != detailLayoutTemplateId)
{
return null;
}
// Get Content Detail item
string contentDetailId = item["Content Detail"];
var valueString = new StringBuilder();
Item contentDetailItem;
string introContent, mainContent;
if (string.IsNullOrEmpty(contentDetailId))
{
return null;
}
contentDetailItem = item.Database.GetItem(ID.Parse(contentDetailId), item.Language);
if (contentDetailItem == null)
{
return null;
}
// Concatenate intro and main content
introContent = contentDetailItem["Intro Content"];
mainContent = contentDetailItem["Main Content"];
if (!string.IsNullOrWhiteSpace(introContent))
{
valueString.Append(Regex.Replace(introContent, "<.*?>", " ") + " ");
}
if (!string.IsNullOrWhiteSpace(mainContent))
{
valueString.Append(Regex.Replace(mainContent, "<.*?>", " ") + " ");
}
return valueString.ToString();
}
}
ich auch die folgende Suche Konfiguration.