SilverStripe的Solr集成。注意,这与silverstripe/fulltext包无关。

安装次数: 13,975

依赖项: 0

建议者: 1

安全: 0

星标: 19

关注者: 3

分支: 18

开放问题: 21

类型:silverstripe-module

6.0.0 2018-07-04 03:37 UTC

README

一个扩展可扩展搜索模块基本功能的模块,增加了从Solr实例索引和搜索内容的能力。

版本信息

  • 2.0分支与SilverStripe 3.0兼容
  • 3.0分支与SilverStripe 3.1兼容,并包含自己的SearchPage实现
  • master分支与SilverStripe 3.1兼容,但依赖于Extensible Search模块进行搜索页面的实现

需求

  • 已安装并运行Solr 4.0(包含测试实例,但生产使用时请安装和配置)
  • 如果您想要有CMS可配置的搜索页面,则需要可扩展搜索模块。

可扩展搜索升级说明

如果您在升级可扩展搜索之前最近一直在使用solr搜索模块,则需要执行以下步骤。

  • 将extensions.yml.sample中的配置添加到您的项目配置中,以绑定SolrSearch扩展到ExtensibleSearchPage
  • 将大多数YML和代码中的SolrSearchPage引用替换为ExtensibleSearchPage,除非您有仍然直接依赖于新SolrSearch扩展的东西。
  • /dev/tasks/SolrSearchPageMigrationTask来更新所有搜索页面引用

快速使用概述

安装Solr(大多数操作系统都有可用的包)

为了演示和测试目的,solr/子目录中提供了一个基于Jetty的独立Solr安装。要执行,只需切换到该目录并运行java -jar start.jar - 默认设置对于评估来说已经足够好。

如果您正在运行自定义Solr实例,请确保将solr/solr/solr/collection1/conf/schema.xml文件复制到您的solr实例中 - SilverStripe使用了一些自定义类型;这些XML如下,如果您想将其放入自己的schema.xml文件中。

   <!-- SilverStripe multivalue field and sortable support -->
   <dynamicField name="*_ms"  type="string"  indexed="true"  stored="true" multiValued="true"/>
   <dynamicField name="*_as"  type="alphaOnlySort"  indexed="true"  stored="true"/>

如果您有不同于默认localhost:8983/solr的配置,可以通过调用

SolrSearchService::$solr_details = array();

添加扩展

在使用可扩展搜索页面时,需要添加以下YAML,以便solr搜索引擎出现。

ExtensibleSearchPage:
  search_engine_extensions:
    SolrSearch: 'Solr'
  extensions:
    - 'SolrSearch'
ExtensibleSearchPage_Controller:
  extensions:
    - 'SolrSearch_Controller'

将SolrIndexable扩展添加到您想要搜索的任何SiteTree对象。其他数据对象的支持可能工作,但文件索引尚未支持

Object::add_extension('SiteTree', 'SolrIndexable');

默认情况下,solr索引器将索引标题和内容字段。如果您想索引其他字段,请将它们添加到您的类类型中的$ searchable_fields静态变量中。

如果您想启用基于用户权限的额外SiteTree索引(而不是过滤搜索结果响应),还有一组可选扩展可用。

这将需要Queued Jobs模块来运行,因为保存页面时的递归索引。

Object::add_extension('SiteTree', 'SiteTreePermissionIndexExtension');
Object::add_extension('ExtensibleSearchPage', 'SolrSearchPermissionIndexExtension');

使用分面

首先,您需要告诉搜索页面您将要分面什么

SolrSearch::$facets = array('MetaKeywords_ms');

然后确保该字段(MetaKeywords)包含在通过searchable_fields静态添加到索引的字段列表中。

*_ms代表一个多值字段。*_as代表一个可排序的字段(不需要标记化)。

模板选项

要自定义显示的搜索结果,请将 SolrSearch_results.ss 文件放在您主题的模板目录下。

API

GitHub Wiki

管理

如果您有管理员权限,您可以从 CMS 中的 Solr 管理部分启动和停止本地打包的 jetty 版本的 solr。

要设置 java 路径(如果与 /usr/bin/java 不同),请设置

SolrSearchService::$java_bin

到正确的路径

故障排除

如果您没有收到任何搜索结果,首先请确保 Solr 已启动并且已被索引。

维护者联系

Marcus Nyeholt

<marcus (at) silverstripe (dot) com (dot) au>

许可

Solr 使用 Apache 许可证进行许可。此模块使用 BSD 许可证进行许可。