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. Java之JSTL标签与JavaBean

    Java之JSTL标签与JavaBean JSP.JSTL标签及 EL表达式 <!-- jstl表达式--> <dependency> <groupId>javax ...

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

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

  3. SpringCloud升级之路2020.0.x版-21.Spring Cloud LoadBalancer简介

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们使用 Spri ...

  4. 【mysql】截取查询分析

    1. 慢查询日志 1.1 是什么 (1)MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL ...

  5. 图解Win 10 应用开发之Sqlite 数据库的简单用法

    尽管目前 UWP-RT 库中还没有自带操作Sqlite数据库的API,不过,真要使用的话也不难,因为通过 Nuget ,我们其实可以获取很多支持 Sqlite 操作的第三方组件,当然了,组件虽多,但不 ...

  6. js对url进行编码和解码

    编码 只有 0-9[a-Z] $ - _ . + ! * ' ( ) , 以及某些保留字,才能不经过编码直接用于 URL. 例如:搜索的中文关键字,复制网址之后再粘贴就会发现该URL已经被转码. 1. ...

  7. 进程CPU、内存过高问题查找

    1.定位进程 找出占用CPU最高的10个进程 ps aux | sort -k3nr | head -n 10 查看占用内存最高的10个进程 ps aux | sort -k4nr | head -n ...

  8. React 性能调优记录(下篇),如何写高性能的代码

    react性能非常重要,性能优化可以说是衡量一个react程序员水平的重要标准. 减少你的渲染 这个大家都明白,只要是父组件中用了子组件,子组件就算没用prop也会进行依次渲染, 可以用pureCom ...

  9. vue3.0入门(四):组件

    组件 组件基础 <my-counter></my-counter> const app = Vue.createApp({ // 根组件 data() { return {} ...

  10. Java基础和常用框架的面试题

    前言 最近学校也催着找工作了,于是刷了一些面试题,学习了几篇大佬优秀的博客,总结了一些自认为重要的知识点:听不少职场前辈说,对于应届毕业生,面试时只要能说到核心重要的点,围绕这个点说一些自己的看法,面 ...