Orchard Core提供了Lucene功能,允许您在网站上进行全文搜索。
大多数情况下,在运行博客或简单的代理网站时,您可能需要在页面内容中进行搜索。
在Orchard Core中,您可以使用Liquid配置,要在Content Type索引哪些文本或数据。

在进一步讨论之前,请注意TheBlogTheme包含一个配方,该配方将在没有任何必要知识的情况下默认为您配置所有这些内容。
让我们看看我们如何一步一步地为您提供此服务。

第一步:在Orchard Core中启用Lucene功能

正如你在这里看到的,我们在Orchard Core中有3个不同的Lucene特性。
您需要启用“Lucene”功能才能创建Lucene索引。

第二步:创建Lucene索引

在Search下Index-->Lucene Indices菜单下,点击按钮Add Index。

显示

让我们来看看Lucene索引上有哪些可用选项:
索引名称用于标识您的索引。
它将在/App_Data/Sites/{YourTenantName}/Lucene/{IndexName}中创建一个文件夹,该文件夹将包含Lucene在索引时创建的所有文件。
第二个选项是用于此索引的Analyzer名称。
对于高级用户来说,分析仪是一种更复杂的功能。
它允许您在索引文本时微调文本的词干。
例如,当您搜索“CAR”时,当人们键入小写的“car”时,您可能也希望得到结果。
在这种情况下,分析器可以使用小写筛选器进行编程,该筛选器将对所有小写文本进行索引。
有关分析器的更多详细信息,请参阅Lucene.NET文档。
默认情况下,Orchard Core中的Analyzer名称只提供针对“English”区域性字符进行优化的标准Analyzer。
分析器是可扩展的,因此您可以通过使用Lucene.NET中提供的分析器之一或通过实现您自己的分析器来添加您自己的分析器。

可参看https://github.com/apache/lucenenet/tree/master/src/Lucene.Net.Analysis.Common/Analysis

例如,您可以使用以下示例通过依赖注入注册自定义分析器,该示例来自自定义模块中的Startup.cs文件:

using Microsoft.Extensions.DependencyInjection;
using OrchardCore.Lucene.Model;
using OrchardCore.Lucene.Services;
using OrchardCore.Modules; namespace OrchardCore.Lucene.FrenchAnalyzer
{
[Feature("OrchardCore.Lucene.FrenchAnalyzer")]
public class Startup : StartupBase
{
public override void ConfigureServices(IServiceCollection services)
{
services.Configure<LuceneOptions>(o =>
o.Analyzers.Add(new LuceneAnalyzer("frenchanalyzer",
new MyAnalyzers.FrenchAnalyzer(LuceneSettings.DefaultVersion))));
}
}
}

第三个选择是文化。
默认情况下,将选择任何区域性。
这里,选择是为了能够定义该索引应该仅索引特定区域性的内容项或它们中的任何一个。
内容类型:您可以选择应该由该索引解析的任何内容类型。

索引最新版本:此选项将允许您仅索引已发布的项目或索引草稿,如果您想要在自定义前端仪表板或甚至在管理后端自定义模块中搜索内容项目,这可能会很有用。
默认情况下,如果我们不选中此选项,它将只索引已发布的内容项。

具体如下:

第三步:配置搜索设置

通过启用Lucene模块,我们还向/search添加了一个新的路由映射,这将需要一些设置才能正常工作。
创建新的Lucene索引后要做的第一件事是在Orchard Core中配置搜索设置。
在这里,我们可以定义网站上的/search页面应该使用哪个索引,也可以定义这个搜索页面应该使用哪些索引字段。
通常,我们默认使用Content.ContentItem.FullText。

第四步:设置索引权限

默认情况下,每个索引都是受权限保护的,因此如果您没有设置哪些索引应该是公共的,则没有人可以查询它们。
要使您网站上的匿名用户可以使用“BlogIndex”Lucene索引,您需要编辑此用户角色并向其添加权限。
每个索引都将在OrchardCore.Lucene功能部分中列出。

给匿名用户授权

接下来我们测试搜索页是否成功

从文件夹可以看出已经建立了Lucene索引内容。

通过/search访问搜索页面。

点击链接,可以看到使用了别名路由

搜索不存在的字符

在本例中,我使用了BlogTheme配方来自动配置所有内容。因此,上面的屏幕截图是该主题的搜索页面结果示例。

微调全文索引

在这里,我们可以看到Blog Post内容类型定义。
现在,我们为每种内容类型设置了一个部分,用于定义此内容项的哪一部分应作为全文的一部分进行索引。
默认情况下,内容项将索引“display text”和“body part”,但我们还为您添加了一个选项,让您自定义要作为此全文索引字段的一部分进行索引的值。
通过单击“使用自定义全文”,我们允许您设置任何流动脚本来执行此操作。
如示例所述,如果您还想通过副标题字段查找此内容项,则可以添加{{Model.Content.BlogPost.Subtitle.Text}}。
您可以使用Liquid字段执行许多操作:索引标识符、固定文本或数值等。

可选:索引模板自定义

此外,您还可以通过覆盖这些文件,根据主题中的特定需要自定义这些模板:

/Views/Shared/Search.liquid or .cshtml (general layout)
/Views/Search-Form.liquid or .cshtml (form layout)
/Views/Search-Results.liquid or .cshtml (results layout)

例如,您可以通过将“Summary”更改为“SearchSummary”并创建相应的形状模板来简单地自定义搜索结果模板以满足您的需要。

SearchResults.liquid:

{% if Model.ContentItems != null and Model.ContentItems.size > 0 %}
<ul class="list-group">
{% for item in Model.ContentItems %}
<li class="list-group-item">
{{ item | shape_build_display: "SearchSummary" | shape_render }}
</li>
{% endfor %}
</ul>
{% elsif Model.Terms != null %}
<p class="alert alert-warning">{{"There are no such results." | t }}</p>
{% endif %}

如何实现Orchard Core CMS的全文索引的更多相关文章

  1. 初试Orchard Core CMS

    关于Orchard Core CMS,这是一套内容管理系统(Content Management System),看一下来自官方文档的解释,什么是Orchard CMS. Orchard is a f ...

  2. 创建一个新的解耦的Orchard Core CMS网站

    引言本文将介绍创建一个功能齐全.解耦的CMS网站的过程,该网站允许您编辑博客帖子并呈现它们.解耦是一种开发模型,其中站点的前端和后端(管理)托管在同一个Web应用程序中,但只有后端由CMS驱动.然后, ...

  3. 创建一个Orchard Core CMS 应用程序

    开始使用Orchard Core作为NuGet软件包 在本文中,我们将看到使用Orchard Core提供的NuGet包创建CMS Web应用程序是多么容易. 你可以在这里找到Chris Payne写 ...

  4. 创建一个 Orchard Core CMS 站点

    本文通过引用项目模板的方式创建Orchard CMS站点. 创建项目有不同的方式可以为Orchard Core创建站点和模块.你可以在这里了解更多关于它们的信息.在本指南中,我们将使用我们的" ...

  5. Orchard Core创建CMS/Blog站点

    安装.NET Core SDK 下载并安装当前最新版本.NET Core SDK 3.1: https://dotnet.microsoft.com/download 安装visual studio ...

  6. Orchard Core学习一

    Orchard Core学习一 Orchard Core是ASP.NET Core上Orchard CMS的重新开发. Orchard Core由两个不同的目标组成: Orchard核心框架:用于在A ...

  7. Orchard Core 文档翻译 (二)代码生成模板 Code Generation Templates

    Code Generation Templates 翻译原文:https://www.cnblogs.com/Qbit/p/9746457.html转载请注明出处 Orchard Core Templ ...

  8. Orchard Core 中文文档翻译(一)关于Orchard Core

    原文连接:https://www.cnblogs.com/Qbit/p/9746363.html 转载请注明出处 翻译说明:本系列为直译,按照官方的计划现在这个版本(2018年10月5日)已经接近最终 ...

  9. Orchard Core 简介

    Orchard Core 是基于ASP.NET Core 对Orchard CMS的 二次开发. Orchard Core由两部分组成: Orchard Core Framework: 一个基于ASP ...

随机推荐

  1. 大数的快速幂模 Python实现

    要求 实现模幂算法,通过服务器的检验. 访问http://2**.207.12.156:9012/step_04服务器会给你10个问题,每个问题包含三个数(a,b,c),请给出a^b%c的值.返回值写 ...

  2. 踩坑记录--接口调用,传参DataTable报错

    问题描述 服务端提供接口,接口参数包含DataTable类型,客户端调用显示请求报错,Postman调用显示Could not get response 解决 原因 接口实现基于wcf,而wcf参数类 ...

  3. springCloud之路API路由网关Zuul

    1.简介 简单的理解就是,相当于在所有服务的调用前加了一层防火墙, 主要就是对外提供服务接口的时候,起到了请求的路由和过滤作用,也因此能够隐藏内部服务的接口细节,提高系统的安全性: 官方文档:http ...

  4. Qt简单的文件创建和读写

    1 QFile fp; //要包含必要的头文件,这里省略 2 QDir(dir); 3 QString path("./"),filename("test.txt&quo ...

  5. PQGrid商业化的表格组件

    官网地址https://paramquery.com/pro/grid 右侧导航条有目录哟,看着更方便 快速入门 表格构建 API简单介绍 主要研究功能介绍 快速入门 ParamQuery Grid ...

  6. 分治算法:Tromino谜题,L型覆盖

    1 public class Tromino { 2 3 static int num = 2; 4 //x 对应 第二维 5 //y 对应 第一维 6 static int[][] panel = ...

  7. REST设计风格:你写的 RESTful API 到第几层了?

    理解REST 在理解其真正概念前,我们先来明确: REST它的核心思想是面向资源的抽象(相对于RPC就是面向过程抽象),它是一种设计风格的指导,而非具有较强约束的协议. REST源于Roy Thoma ...

  8. 【C语言】

    第3章 最简单的C程序设计 顺序程序设计 数据的表现形式及其运算 常量.变量.常变量.标识符 数据类型 整型.浮点型 整型数据的分类 最基本的整型类型 基本整型(int型):占2个或4个字节 短整型( ...

  9. 一个简单的 aiax请求例子

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  10. 将 VS2017下开发的程序, 部署到其他电脑上运行

    关键步骤:设置Release,如下图 如果无法直接执行,则安装ALI213-Microsoft.Visual.C++.2017.Redistributable.Package.x86.x64