如何使用Lucene索引Sitecore中的子内容?

托马斯·希金博特汉姆

我将Sitecore 7.2与MVC和组件方法一起用于页面构建。这意味着页面基本上是空的,内容来自放置在页面上的各种渲染。但是,我希望搜索结果返回主页,而不是单个内容。

这是我到目前为止的基本代码:

public IEnumerable<Item> GetItemsByKeywords(string[] keywords)
{
    var index = ContentSearchManager.GetIndex("sitecore_master_index");
    var allowedTemplates = new List<ID>();
    IEnumerable<Item> items;

    // Only Page templates should be returned
    allowedTemplates.Add(new Sitecore.Data.ID("{842FAE42-802A-41F5-96DA-82FD038A9EB0}"));

    using (var context = index.CreateSearchContext(SearchSecurityOptions.EnableSecurityCheck))
    {
        var keywordsPredicate = PredicateBuilder.True<SearchResultItem>();
        var templatePredicate = PredicateBuilder.True<SearchResultItem>();
        SearchResults<SearchResultItem> results;

        // Only return results from allowed templates
        templatePredicate = allowedTemplates.Aggregate(templatePredicate, (current, t) => current.Or(p => p.TemplateId == t));

        // Add keywords to predicate
        foreach (string keyword in keywords)
        {
            keywordsPredicate = keywordsPredicate.And(p => p.Content.Contains(keyword));
        }

        results = context.GetQueryable<SearchResultItem>().Where(keywordsPredicate).Filter(templatePredicate).GetResults();
        items = results.Hits.Select(hit => hit.Document.GetItem());
    }

    return items;
}
马克·乌尔西诺

您可以在索引中创建一个计算字段,该字段查看页面上的渲染并解析每个渲染​​的数据源项。一旦拥有了这些项目中的每一个,就可以为其字段建立索引并将所有这些数据连接在一起。

一种选择是使用本地“内容”计算字段执行此操作,该字段自然是全文搜索使用的字段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Lucene索引Sitecore中的子内容?

来自分类Dev

如何在Sitecore内容分发服务器上重建自定义Lucene索引?

来自分类Dev

未在SiteCore Lucene搜索索引中建立索引的组件

来自分类Dev

未在SiteCore Lucene搜索索引中建立索引的组件

来自分类Dev

如何使Lucene.NET将2个Sitecore字段合并到1个索引字段中?

来自分类Dev

指定在 sitecore lucene 中使用哪个索引

来自分类Dev

如何使用Term或QueryParser从Lucene索引中删除文档

来自分类Dev

Lucene-如何为两个不同字段中的文件内容建立索引

来自分类Dev

如何使用Lucene在Sitecore中具有多个位置的文档上进行地理空间搜索?

来自分类Dev

如何使用Lucene在Sitecore中具有多个位置的文档上进行地理空间搜索?

来自分类Dev

Sitecore Lucene:内容发布服务器索引在发布时未更新

来自分类Dev

如何从Lucene索引中获得独特的结果?

来自分类Dev

如何使用Java读取Lucene 4.0索引?

来自分类Dev

Sitecore 7索引树列表Lucene

来自分类Dev

Sitecore Lucene从索引中排除项目

来自分类Dev

Sitecore 6.6-设置Lucene索引

来自分类Dev

Sitecore 7索引树列表Lucene

来自分类Dev

Sitecore 8.1 Lucene没有更新-如何确定索引是否已完全建立?

来自分类Dev

Sitecore 8.2 Lucene 搜索未索引计算字段中的所有术语

来自分类Dev

如何使用带有OrientDb中参数的NGramTokenizer创建Lucene索引?

来自分类Dev

如何使用PyLucene从Lucene 8.6.1索引中获取所有令牌的列表?

来自分类Dev

在lucene中索引整数

来自分类Dev

如何在Elasticsearch或Lucene中基于索引类型增强搜索?

来自分类Dev

如何在Lucene中索引多边形数据

来自分类Dev

如何在Lucene中索引字符串?

来自分类Dev

如何从Lucene 8.6.1索引中获取所有令牌的列表?

来自分类Dev

如何索引和搜索Lucene.NET中的Datetime字段?

来自分类Dev

如何在elasticsearch或lucene中基于索引类型增强搜索?

来自分类Dev

如何在 Lucene 7.4 中索引短字段

Related 相关文章

  1. 1

    如何使用Lucene索引Sitecore中的子内容?

  2. 2

    如何在Sitecore内容分发服务器上重建自定义Lucene索引?

  3. 3

    未在SiteCore Lucene搜索索引中建立索引的组件

  4. 4

    未在SiteCore Lucene搜索索引中建立索引的组件

  5. 5

    如何使Lucene.NET将2个Sitecore字段合并到1个索引字段中?

  6. 6

    指定在 sitecore lucene 中使用哪个索引

  7. 7

    如何使用Term或QueryParser从Lucene索引中删除文档

  8. 8

    Lucene-如何为两个不同字段中的文件内容建立索引

  9. 9

    如何使用Lucene在Sitecore中具有多个位置的文档上进行地理空间搜索?

  10. 10

    如何使用Lucene在Sitecore中具有多个位置的文档上进行地理空间搜索?

  11. 11

    Sitecore Lucene:内容发布服务器索引在发布时未更新

  12. 12

    如何从Lucene索引中获得独特的结果?

  13. 13

    如何使用Java读取Lucene 4.0索引?

  14. 14

    Sitecore 7索引树列表Lucene

  15. 15

    Sitecore Lucene从索引中排除项目

  16. 16

    Sitecore 6.6-设置Lucene索引

  17. 17

    Sitecore 7索引树列表Lucene

  18. 18

    Sitecore 8.1 Lucene没有更新-如何确定索引是否已完全建立?

  19. 19

    Sitecore 8.2 Lucene 搜索未索引计算字段中的所有术语

  20. 20

    如何使用带有OrientDb中参数的NGramTokenizer创建Lucene索引?

  21. 21

    如何使用PyLucene从Lucene 8.6.1索引中获取所有令牌的列表?

  22. 22

    在lucene中索引整数

  23. 23

    如何在Elasticsearch或Lucene中基于索引类型增强搜索?

  24. 24

    如何在Lucene中索引多边形数据

  25. 25

    如何在Lucene中索引字符串?

  26. 26

    如何从Lucene 8.6.1索引中获取所有令牌的列表?

  27. 27

    如何索引和搜索Lucene.NET中的Datetime字段?

  28. 28

    如何在elasticsearch或lucene中基于索引类型增强搜索?

  29. 29

    如何在 Lucene 7.4 中索引短字段

热门标签

归档