Lucene 获取Sitecore内容数据中的最后一项

Lucene 获取Sitecore内容数据中的最后一项,lucene,sitecore,sitecore6,Lucene,Sitecore,Sitecore6,我正在执行搜索,其中我必须获取sitecore/content/data/MyItem中存储的最后一个项目的“ID”(字段)。此文件夹中存储的项目数量为1000多个。我知道Lucene搜索是非常有效的。我执行了Lucene搜索,根据如下值获取项目: using (IndexSearchContext searchContext = indx.CreateSearchContext()) { var db = Sitecore.Context

我正在执行搜索,其中我必须获取sitecore/content/data/MyItem中存储的最后一个项目的“ID”(字段)。此文件夹中存储的项目数量为1000多个。我知道Lucene搜索是非常有效的。我执行了Lucene搜索,根据如下值获取项目:

using (IndexSearchContext searchContext = indx.CreateSearchContext())
            {
                var db = Sitecore.Context.Database;
                CombinedQuery query = new CombinedQuery();

                QueryBase catQuery = new FieldQuery("country", guidValueToSearch); //FieldName, FieldValue.
                SearchHits results = searchContext.Search(catQuery); //Searching the content items by fields.
                SearchResultCollection result = results.FetchResults(0, numOfArticles);

在这里,我将guidValue传递给search,查找需要为“country”字段值获取的项目。但我想得到文件夹中的最后一项。如何实现这一点?

如果您知道需要/sitecore/content/data/MyItem的最后一个子项,也可以使用更简单的方法获取parentItem,然后检索最后一个子项:

Item myItem = Sitecore.Context.Database.GetItem("/sitecore/content/data/MyItem");
Item lastItem = myItem.Children.Last();

子体而不是子体也可以这样做。

如果您知道需要/sitecore/content/data/MyItem的最后一个子项,也可以使用更简单的方法获取parentItem,然后检索最后一个子项:

Item myItem = Sitecore.Context.Database.GetItem("/sitecore/content/data/MyItem");
Item lastItem = myItem.Children.Last();

子代而不是子代也可以这样做。

如果您确实想使用搜索实现它,那么请查看答案,其中解释了如何扩展IndexSearchContext,使其具有接受Lucene.Net.search.Sort的方法。然后,您可以传入Sitecore.Search.BuiltinFields.Created或Sitecore.Search.BuiltinFields.Updated字段(取决于您的目标)。

如果您确实想使用Search实现它,请查看答案,其中解释了如何扩展IndexSearchContext,使其具有接受Lucene.Net.Search.Sort的方法。然后,您可以传入Sitecore.Search.BuiltinFields.Created或Sitecore.Search.BuiltinFields.Updated字段(取决于您所关注的内容)。

树中的最后一个项目(排序顺序)或最后一个更新的项目是什么意思?您是指内容树中该文件夹内的项目吗,检索最近更新的项目?树中的最后一个项目(排序顺序)或最后更新的项目是什么意思?是指在内容树的该文件夹中检索最近更新的项目吗?