silverstripe / solr
SilverStripe的Solr集成。注意,这与silverstripe/fulltext包无关。
Requires
- silverstripe/cms: ~3.1
- silverstripe/framework: ~3.1
- silverstripe/multivaluefield: ~2.0
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
管理
如果您有管理员权限,您可以从 CMS 中的 Solr 管理部分启动和停止本地打包的 jetty 版本的 solr。
要设置 java 路径(如果与 /usr/bin/java 不同),请设置
SolrSearchService::$java_bin
到正确的路径
故障排除
如果您没有收到任何搜索结果,首先请确保 Solr 已启动并且已被索引。
维护者联系
Marcus Nyeholt
<marcus (at) silverstripe (dot) com (dot) au>
许可
Solr 使用 Apache 许可证进行许可。此模块使用 BSD 许可证进行许可。