cms网站内容如何自定义(OrchardCore中启用“Lucene”功能才能创建Lucene索引(图))
优采云 发布时间: 2021-12-14 21:24cms网站内容如何自定义(OrchardCore中启用“Lucene”功能才能创建Lucene索引(图))
Orchard Core 提供了 Lucene 功能,可以对 网站 进行全文搜索。
大多数情况下,在运行博客或简单代理网站时,可能需要在页面内容中进行搜索。
在 Orchard Core 中,您可以使用 Liquid 配置要在内容类型中索引哪些文本或数据。
在继续之前,请注意 TheBlogTheme 收录一个配方,默认情况下将为您配置所有这些,而无需任何必要的知识。
让我们看看我们如何逐步为您提供这项服务。
第一步:在 Orchard Core 中启用 Lucene 功能
正如您在此处看到的,我们在 Orchard Core 中有 3 种不同的 Lucene 功能。
您需要启用“Lucene”功能才能创建 Lucene 索引。
步骤 2:创建 Lucene 索引
在“搜索”下的“索引”->“LuceneIndices”菜单中,单击“添加索引”按钮。
展示
我们来看看Lucene索引有哪些可用的选项:
索引名称用于标识您的索引。
它将在 /App_Data/Sites/{YourTenantName}/Lucene/{IndexName} 中创建一个文件夹,其中将收录 Lucene 在索引期间创建的所有文件。
第二个选项是用于该索引的分析器的名称。
对于高级用户来说,分析器是一个更复杂的功能。
它允许您在索引文本时微调文本的词干。
例如,当您搜索“CAR”时,当人们输入小写的“car”时,您可能还需要结果。
在这种情况下,可以使用小写过滤器对分析器进行编程,该过滤器将索引所有小写文本。
有关分析器的更多详细信息,请参阅 Lucene.NET 文档。
默认情况下,Orchard Core 中的分析器名称仅提供针对“英文”区域字符优化的标准分析器。
该分析器是可扩展的,因此您可以使用 Lucene.NET 中提供的分析器之一或通过实现您自己的分析器来添加您自己的分析器。
可以参考
例如,您可以使用以下示例通过依赖注入注册自定义分析器,该依赖注入来自自定义模块中的 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(o => o.Analyzers.Add(new LuceneAnalyzer(\"frenchanalyzer\", new MyAnalyzers.FrenchAnalyzer(LuceneSettings.DefaultVersion)))); } }}
第三种选择是文化。
默认情况下,将选择任何文化。
在这里,选择是能够定义索引应仅索引特定文化或其中任何一项的内容项。
内容类型:您可以选择该索引应该解析的任何内容类型。
索引最新版本:此选项将允许您仅索引已发布的项目或索引草稿,如果您想在自定义前端仪表板甚至管理后端的自定义模块中搜索内容项目,这可能很有用.
默认情况下,如果我们不选中此选项,它只会索引已发布的内容项。
详情如下:
步骤 3:配置搜索设置
通过启用 Lucene 模块,我们还向 /search 添加了一个新的路由映射,这需要一些设置才能正常工作。
创建新的 Lucene 索引后要做的第一件事是在 Orchard Core 中配置搜索设置。
在这里,我们可以定义网站上的/search页面应该使用哪个索引,以及这个搜索页面应该使用哪些索引字段。
通常,我们默认使用 Content.ContentItem.FullText。
第 4 步:设置索引权限
默认情况下,每个索引都受权限保护,因此如果您不设置哪些索引应该是公开的,则没有人可以查询它们。
要使您的 网站 上的匿名用户能够使用“BlogIndex”Lucene 索引,您需要编辑此用户角色并为其添加权限。
每个索引都将在 OrchardCore.Lucene 函数部分中列出。
授权匿名用户
接下来我们测试搜索页面是否成功
从文件夹中可以看出Lucene索引内容已经建立。
通过 /search 访问搜索页面。
点击链接,可以看到使用了别名路由
搜索不存在的字符
在这个例子中,我使用了 BlogTheme 配方来自动配置一切。因此,上面的屏幕截图是该主题的搜索页面结果示例。
微调全文索引
在这里,我们可以看到博客帖子内容类型定义。
现在,我们为每种内容类型设置了一个部分,以定义该内容项的哪一部分应作为全文的一部分编入索引。
默认情况下,内容项将索引“显示文本”和“正文部分”,但我们还添加了一个选项供您自定义要作为此全文索引字段的一部分进行索引的值。
通过单击“使用自定义全文”,我们允许您设置任何移动脚本来执行此操作。
如示例中所述,如果您还想通过副标题字段查找此内容项,则可以添加{{Model.Content.BlogPost.Subtitle.Text}}。
您可以使用 Liquid 字段执行许多操作:索引标识符、固定文本或值等。
可选:索引模板定制
此外,您可以根据主题中的具体需求,通过覆盖这些文件来自定义这些模板:
/Views/Shared/Search.liquid 或 .cshtml(一般布局)
/Views/Search-Form.liquid 或 .cshtml(表单布局)
/Views/Search-Results.liquid 或 .cshtml(结果布局)
例如,您可以通过将“Summary”更改为“SearchSummary”并创建相应的形状模板来简单地自定义搜索结果模板以满足您的需求。
SearchResults.liquid:
{% if Model.ContentItems != null and Model.ContentItems.size > 0 %} {% for item in Model.ContentItems %} {{ item | shape_build_display: \"SearchSummary\" | shape_render }} {% endfor %} {% elsif Model.Terms != null %} <p spanclass/span=span\"/spanspanalert alert-warning/spanspan\"/span>{{\"There are no such results.\" | t }}{% endif %}</p>
免责声明:本站资源均来自互联网。如果您侵犯了您的权益,请联系邮箱:我们将在一天内处理。购买资源和会员后不支持退款。购买前请慎重考虑。我们会尽力为您解决问题。如果您有任何问题或疑问,请联系;如果您是游客模式购买资源,建议您立即注册账号(建议用QQ登录),永久保留您的购买记录(无限下载),防止订单丢失造成损失。下载或购买资源即表示您已阅读、理解并同意用户协议和下载说明,以及本站会员的权益、资源购买、安装等。
果园核心