gpt4 book ai didi

solr - Solr 索引中缺少 Id 字段

转载 作者:行者123 更新时间:2023-12-01 23:31:47 31 4
gpt4 key购买 nike

我刚刚发现我的 Solr 索引不包含 _id 字段。并且无法获取项目 ID。 UniqueId 存在,但这并不是很有用。

public class MyClass
{
[IndexField(BuiltinFields.UniqueId)]
public string UniqueId { get; set; }

[IndexField(BuiltinFields.ID)]
public int Id { get; set; }
}

如何将项目 ID 添加到 Solr 索引?我应该向 schema.xml 添加什么?下一个字符串就足够了吗?

<field name="_id" type="string" indexed="true" stored="true" required="true" />

如果是,为什么 Sitecore 在为 Solr 构建 schema.xml 文件时不包含它?

看来我也有搜索结果中重复记录的问题:)

最佳答案

正如 Richard 所回答的,Solr 中有一个 _group 字段。如果你想让它自动翻译成ID对象,你可以使用:

[TypeConverter(typeof (IndexFieldIDValueConverter))]
[IndexField("_group")]
public virtual ID ItemId { get; set; }

请记住,如果您有多个版本或语言版本,_group 字段将不够,因为会有多个文档具有相同的 _group (id)。在这种情况下,您可能需要使用 UniqueId - 它包含有关 id、版本、语言和数据库的信息:

[IndexField("_uniqueid")]
public virtual string UniqueId { get; set; }

然后获取项目使用:

private Item _innerItem;
public virtual Item GetItem()
{
if (_innerItem == null)
{
ItemUri uri = new ItemUri(UniqueId);
_innerItem = Factory.GetDatabase(uri.DatabaseName).GetItem(uri.ItemID, uri.Language, uri.Version);
}
return _innerItem;
}

或者您可以从 Sitecore.ContentSearch.SearchTypes.SearchResultItem 继承您的 MyClass,您将在那里拥有所有内置字段。

关于solr - Solr 索引中缺少 Id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970849/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com