当前位置: 首页 > 知识库问答 >
问题:

SiteCore:使用lucene进行全文搜索

何安宜
2023-03-14

供参考:我的代码和这个so帖子非常相似。

谢谢

共有1个答案

邰伟彦
2023-03-14

Sitecore已经维护了一个完整的文本字段_content,该字段包含所有文本字段。你可以对照这个进行搜索。您甚至可以创建添加_content的计算字段(例如这里的datasource content示例)。

因此,假设您正在为全文搜索构建一个LINQ查询,并且已经对模板、最新版本、位置等进行了筛选,那么将搜索项添加到查询中将如下所示:

var terms = SearchTerm.Split();
var currentExpression = PredicateBuilder.True<SiteSearchResultItem>();
foreach (var term in terms)
{
    //Content is mapped to _content
    currentExpression = PredicateBuilder.And(currentExpression, x => x.Content.Contains(term));
}
query = query.Where(currentExpression);

通常情况下,您会希望并搜索术语,而不是对它们进行ORing。

 类似资料:
  • 我正在使用Sitecore搜索数据库中的项目。

  • 注意: 我只使用“luceneresults”.ascx和.cs。 ----问题更新了,因为我缩小了问题的范围---- 我试图创建一组特定项的索引,用于Lucene搜索。 在web.config中,我指定了一个索引,该索引包含: 完整索引:

  • 我在建立一个简单的地址数据库。有一个名为的类,其中的地址被分解为字段(street、city、state、ZIP)。每个字段都是字符串类型。 我想能够搜索地址中的任何一个字。例如:查找地址,无论搜索的词是在街道名称或城市名称等。换句话说,我希望用户能够轻松搜索,而不必指定他们感兴趣的地址的哪一部分。 但是当我执行以下查询时,我不会得到结果或错误消息: =>没有结果,应该是2条邮政编码为46250和

  • 问题内容: 我正在开发一个高容量的Web应用程序,其中的一部分是讨论帖子的MySQL数据库,该数据库需要平稳地增长到2000万+行。 我本来打算对表使用MyISAM(用于内置的全文本搜索功能),但是由于单个写入操作而使 整个表 被锁定的想法使我陷入困境。行级锁具有更大的意义(更不用说InnoDB在处理大型表时的其他速度优势)。因此,基于这个原因,我决心使用InnoDB。 问题是… InnoDB没有

  • 假设我存储的Lucene文档有一个表示正则表达式的存储字段。 即 我的搜索输入类似于。

  • 问题内容: 我有一个包含多个字段的索引,其中一个是字符串字段,我在其中存储产品的类别名称…例如“电子”,“家庭”,“花园”等 我正在执行布尔查询以按名称,价格和类别查找产品,但是我不确定如何执行“或”搜索,以便可以同时查询两个类别。 我当前的查询如下所示: 这对于一个类别的搜索来说效果很好,但是我不确定如何搜索将是两个类别的“ Electronics OR Home”。 问题答案: 您可以这样写: