pantheon-systems/solr-power

一个开源插件,用于连接到Pantheon的Apache Solr搜索基础设施,或者您自己的!

安装: 59

依赖项: 0

建议者: 0

安全: 0

星标: 126

关注者: 40

分支: 61

开放问题: 46

类型:wordpress-plugin


README

贡献者: getpantheon, Outlandish Josh, 10up, collinsinternet, andrew.taylor, danielbachhuber, mattleff, mikengarrett, jazzsequence, jspellman, pwtyler
标签: search
需要至少 4.6
需要PHP 7.1
测试到 6.5.2
稳定标签 2.5.3
许可: GPLv2 或更高版本
许可URI: https://gnu.ac.cn/licenses/gpl-2.0.html

使用Apache Solr搜索引擎提升您的WordPress网站的用户体验。

描述

Actively Maintained Lint and Test

搜索对您的网站至关重要,但WordPress的默认搜索功能还有很多不足。使用Apache Solr搜索引擎提升您的WordPress网站的用户体验。

  • 快速结果,更高的准确度。
  • 支持在标签、分类、作者和页面类型等字段上进行分面搜索。
  • 支持自定义字段的索引和分面搜索。
  • 通过将 solr_integrate 参数设置为true,支持与 WP_Query 的一键集成。
  • 完全取代默认的WordPress搜索,只需安装和配置即可。
  • 完全集成到默认WordPress主题和搜索小部件中。
  • 非常适合开发者:使用现代的 Solarium

安装

Solr Power插件可以像安装其他WordPress插件一样安装。

由于Solr Power旨在作为WordPress和Apache Solr搜索引擎之间的桥梁,您需要访问一个功能正常的Solr 3.6实例,以便插件按预期工作。此插件不支持其他版本的Solr。插件还需要PHP 7.1或更高版本。

如果您在Pantheon上使用Solr Power插件,设置Apache Solr就像在Pantheon仪表板中启用Apache Solr附加组件一样简单。完成此操作后

  1. 通过访问Solr Power设置页面的“索引”选项卡,配置要索引的帖子类型、分类和自定义字段。
  2. 通过访问插件选项屏幕并选择相应的 操作 来索引现有内容
      • 索引可搜索的帖子类型
  3. 开始搜索!
  4. 有关更丰富的实现指南,请参阅examples/templates目录。

如果您在其他地方使用Solr Power插件,则需要安装和配置Apache Solr。在Linux环境中,这涉及以下四个步骤

  1. 安装Java运行时环境。
  2. 运行 ./bin/install-solr.sh 以在端口8983上安装和运行Apache Solr。
  3. 通过设置环境变量 PANTHEON_INDEX_HOSTPANTHEON_INDEX_PORT 来配置Solr Power以使用此特定的Solr实例。
  4. schema.xml 复制到 Solr 配置目录(类似于 solr/conf/schema.xml 的路径)。

或者,您可能可以使用几个社区维护的 Docker 容器:kalabox/pantheon-solrkshaner/solr

在本地开发环境中,您可以通过创建一个 MU 插件将 Solr Power 指向一个自定义的 Solr 实例

<?php
/**
 * Define Solr host IP, port, scheme and path
 * Update these as necessary if your configuration differs
 */
putenv( 'PANTHEON_INDEX_HOST=192.168.50.4' );
putenv( 'PANTHEON_INDEX_PORT=8983' );
add_filter( 'solr_scheme', function(){ return 'http'; });
define( 'SOLR_PATH', '/solr/wordpress/' );

** 适用于 Lando 用户请注意 **

如果您使用 lando 进行开发,则不需要 MU 插件。Lando 会自动为您配置本地环境以连接到它维护的 docker 索引,如果您覆盖了 ENV 变量,则可能会破坏该配置。

开发

此插件在 GitHub 上处于积极开发状态

https://github.com/pantheon-systems/solr-power

请随时在那里提交问题。我们也欢迎拉取请求!有关贡献的信息,请参阅 CONTRIBUTING.md

有关进一步文档,例如可用筛选器和直接使用 SolrPower_Api 类,请参阅项目维基

https://github.com/pantheon-systems/solr-power/wiki

WP-CLI 支持

此插件支持 WP-CLI

所有 Solr Power 相关命令都包含在 wp solr 命令中,请参阅示例

$ wp solr
usage: wp solr check-server-settings
   or: wp solr delete [<id>...] [--all]
   or: wp solr index [--batch=<batch>] [--batch_size=<size>] [--post_type=<post-type>]
   or: wp solr info [--field=<field>] [--format=<format>]
   or: wp solr optimize-index
   or: wp solr repost-schema
   or: wp solr stats [--field=<field>] [--format=<format>]

See 'wp help solr <command>' for more information on a specific command.

使用 wp help solr 可查看有关命令的更多详细信息

**NAME**

  wp solr

**DESCRIPTION**

  Perform a variety of actions against your Solr instance.

**SYNOPSIS**

  wp solr <command>

**SUBCOMMANDS**

  check-server-settings      Check server settings.
  delete                     Remove one or more posts from the index.
  index                      Index all posts for a site.
  info                       Report information about Solr Power configuration.
  optimize-index             Optimize the Solr index.
  repost-schema              Repost schema.xml to Solr.
  stats                      Report stats about indexed content.

WP_Query 集成

使用 Solr 替代数据库查询自定义 WP_Query。在查询参数中添加 'solr_integrate' => true

注意:目前,仅支持基本查询、tax_query、meta_query 和 date_query。有关示例,请参阅 examples/example.custom_WP_Query.php

meta_query 可以使用以下比较运算符

  • '='
  • '!='
  • '>'
  • '>='
  • '<'
  • '<='
  • 'LIKE'
  • 'NOT LIKE'
  • 'IN'
  • 'NOT IN'
  • 'BETWEEN'
  • 'NOT BETWEEN'
  • 'EXISTS'
  • 'NOT EXISTS'

(不支持 'REGEXP''NOT REGEXP''RLIKE')

配置技巧

按作者名称搜索

要支持按作者名称搜索(例如,其中 "Pantheon" 会返回由 "Pantheon" 用户撰写的文章),请将以下内容添加到您的自定义 schema.xml

<copyField source="post_author" dest="text"/>

通过发布日期提升相关性评分

以下指南可用于扩展 Solr 索引并修改提升,而不仅限于此示例。

要支持日期上的数学函数,您必须向 Solr 添加自定义 schema.xml使用新架构重新索引

将以下内容添加到 schema.xml

  <!-- Add to <types> -->
  <!-- See: https://lucene.apache.org/solr/6_2_0/solr-core/org/apache/solr/schema/TrieDateField.html -->
  <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>

  <!-- Add to <fields> -->
  <field name="post_date_iso" type="tdate" indexed="true" stored="true" required="true" />

将以下内容添加到您的 functions.php 文件中。

  <?php
  /**
   * Hooks into the document build process to add post date field in proper format.
   */
  function my_solr_build_document( $doc, $post_info ) {
        $post_time = strtotime( $post_info->post_date );
        // Matches format required for TrieDateField
        $doc->setField( 'post_date_iso', gmdate( 'c\Z', $post_time ) );
        return $doc;
  }
  add_filter( 'solr_build_document', 'my_solr_build_document', 10, 2 );

  /**
   * Hooks into query processor, Dismax, to add publish date boost.
   * See: https://www.metaltoad.com/blog/date-boosting-solr-drupal-search-results
   */
  function my_solr_dismax_query( $dismax ) {
        $dismax->setQueryParser( 'edismax' );
        $dismax->setBoostQuery( 'recip(abs(ms(NOW/HOUR,post_date_iso),3.16e-11,1,1))' );
        return $dismax;
  }
  add_filter( 'solr_dismax_query', 'my_solr_dismax_query' );

常见问题

  • 未能发布 schema.xml 将导致索引时出现错误,"缺少 post_date_iso 字段"。
  • 如果在 schema 中具有字段和类型,但没有添加 solr_build_document 筛选器,则将得到类似的错误。
  • 如果 post_date_iso 字段从索引中缺失,Solr 将忽略此提升并返回常规结果。
  • 尝试使用常规日期字段进行提升查询将在请求中导致错误而不是结果。

显式提交与自动提交

Solr 已将数据发送到 solr 服务器后,solr 必须将数据提交到索引并相应地调整索引和相关度评分,然后该数据才能出现在搜索结果中。

默认情况下,Solr Search for WordPress 具有禁用自动提交。当未提交的项目已过两分钟或 cron 运行时,索引会提交。默认情况下,cron 在 Pantheon 平台上每小时运行一次。

当启用自动提交时,Solr Search for WordPress 在发送每个帖子时提交数据。在 Pantheon 上运行时,我们建议禁用自动提交以帮助提高整体网站性能。

要启用自动提交,请在 wp-config.php 或 mu-plugin 中添加以下内容。

define( 'SOLRPOWER_DISABLE_AUTOCOMMIT', false );

要强制在正常 cron 运行之外提交数据,可以从命令行运行以下命令,或者简单地强制执行 cron 运行。

wp solr commit

安全策略

报告安全漏洞

请通过 Patchstack 漏洞披露计划 报告在 Solr Power 插件源代码中发现的任何安全漏洞。Patchstack 团队将协助您进行验证、CVE 分配,并通知此插件的开发者。