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. DVWA靶场之CSRF(跨站请求伪造)通关

    Low: 服务器就看了password_new与password_conf是否相同,没有其他的验证 重新构造一个html页面,(自己假装自己是受害者,ip是靶场ip非本地ip) 1 <img s ...

  2. 001 七层OSI参考模型

    一.什么是七层OSI参考模型 OSI(Open System Interconnect),即开放式系统互连.是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考 ...

  3. ubuntu与主机ping不通的解决办法(主机检测不到虚拟网卡)

    文章目录 一.问题的出现与思路的转变 二.Ubuntu的网络适配器的俩种模式 1.桥接模式( Bridged) 2.NAT模式 三.桥接模式下的网卡配置出现问题 四.解决问题的步骤(一次通过) 集线器 ...

  4. selenium处理:您的连接不是私密连接的网站(https ssl 证书)

    当前我们遇到这样的问题,就要通过代码的层面去解决 requests的话verify参数设置为False selenium的话添加参数:--ignore-certificate-errors 测试代码: ...

  5. 超详细,自动化测试接入Jenkins+Sonar质量门禁实践

    大家好,我叫董鑫,一名在测试开发道路上的新手.第一阶段的学习已然结束,收获颇多,了解了很多在自己平时测试工作无法接触到的新知识,比如这次在这里分享的Sonarqube进行静态代码扫描并集成Jenkin ...

  6. noip11

    T1 考试的时候打的暴力,快结束的时候,脑抽加了个 long long,然后就... 痛失70pts QAQ. Your source code compiled to 8015900 bytes w ...

  7. Golang在Linux系统中实现微秒级延迟

    在程序中延迟或者等待一段时间一般可以使用Sleep函数实现,但是因为操作系统线程调度的消耗,往往只能做到十几或者数十毫秒的精度,很难达到微秒级,Golang的time.Sleep也是如此. Sleep ...

  8. SpringBoot整合ActiveMq实现Queue和Topic两种模式(看不懂你来打我)

    目录 一.前言 二.ActiveMq的下载和使用 三.依赖准备 四.yml文件配置 五.配置Bean 六.创建生产者(Queue+Topic) 七.创建消费者(Topic模式下) 八.测试结果(Top ...

  9. 一些Java知识点

    1 import java.util.ArrayList; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 ...

  10. myScript调研,电子手写板使用,纯干货

    第二天进公司,就叫我调研myScript作为手写板的可行性,又不能不做,哎~ myScript效果十分的奈斯,前端用canvas手写的文字.数学字符,都可以识别然后转换,不知道myScript是不是你 ...