blackbit_digital_commerce / pimcore-better-search

Pimcore后端搜索的即时替代品

dev-master 2023-06-29 07:48 UTC

This package is auto-updated.

Last update: 2024-08-29 10:33:58 UTC


README

为了高效的数据维护,必须有一个高效搜索。此包是Pimcore默认后端搜索的即时替代品。它提供了一种类似于用户从流行的网络搜索引擎所熟知的搜索体验。

它不需要任何配置或安装外部应用程序。

Pimcore内置搜索功能的问题

Pimcore提供以下对象搜索:

  • 全局搜索
  • 关系字段搜索(通过查找玻璃图标)
  • 网格搜索

所有这些地方都使用相同的底层搜索引擎,因此也存在相同的问题

  • 默认情况下(没有MySQL的搜索操作符),仅支持单词搜索
    • 例如,搜索 product 不会找到仅包含 products 的数据对象
  • 小于3个字符的术语被忽略(使用MySQL的默认 innodb_ft_min_token_size 设置)
    • 例如,搜索 CD 将永远不会找到任何东西
  • 没有模糊搜索,这容忍了拼写错误
    • 例如,搜索 produt 不会找到 product
  • 没有词干提取
    • 例如,搜索 shirts(复数)将不会找到包含 shirt 的对象
  • 有时搜索结果的顺序令人烦恼
    • 例如,只包含搜索词一次的元素会被列在包含多次的元素之上
  • 搜索对于没有单词分隔符的语言(如中文、日语)不可用

插件做了哪些不同的事情?

此包使用 TNT Search 作为底层库。此库解决了上述所有问题,因为它

  • 支持前缀和后缀搜索
  • 支持任何长度的单词
  • 实现模糊/容错搜索
  • 实现多种语言的词干提取
  • 实现 TF/IDF算法 以更好地排序搜索结果
  • 实现n-gram搜索
    • 用于使用没有单词分隔符的语言(如中文/日语)

插件作为Pimcore搜索功能的即时替代品工作:在用户界面中,一切都将与默认Pimcore相同。只是底层的索引和搜索逻辑被改变。

SQL模式

您还可以通过在查询前添加一个 / 来添加SQL过滤条件,例如 /SKU IN (1234,2345,3456) 将返回恰好3个指定的项目。对于网格搜索,此功能在Pimcore 10之前可用,但对于关系搜索则从未可用。使用此功能,很容易向关系添加多个项目。

对于Pimcore >= 11,这也恢复了网格中的SQL过滤器。

安装

Composer

要获取插件代码,您必须 购买插件 或发送电子邮件至 info@blackbit.de

您可以获取插件包的Bitbucket代码仓库,或者以zip文件的形式获取插件代码。访问Bitbucket代码仓库的优势在于,您将始终在拉取请求中看到插件的变化,并能够自行更新到新版本。如果您对此感兴趣,请访问此页面。如果感兴趣,请发送您的Bitbucket账户邮箱地址,以便我们允许访问代码仓库。

当我们允许您的账户访问我们的代码仓库时,请将代码仓库添加到Pimcore根目录下的composer.json文件中(参见Composer代码仓库)。

"repositories": [
    {
        "type": "vcs",
        "url": "git@bitbucket.org:blackbitwerbung/pimcore-plugins-better-search"
    }
]

(为此,请将您的公钥添加到您的Bitbucket账户

如果您以zip文件的形式收到了插件代码,请将zip文件上传到您的服务器上——例如,在Pimcore根目录下创建一个名为bundles的文件夹,并将其添加到您的composer.json文件中。

"repositories": [
    {
        "type": "artifact",
        "url": "./bundles/"
    }
]

请注意,当您直接将zip文件放在Pimcore根目录下,并添加"url": "./"时,它仍然可以工作,但Composer将递归地扫描Pimcore根目录下的所有文件(包括资产、版本等)以找到包zip文件,这将花费很长时间。

然后,您应该能够从CLI执行composer require blackbit/better-search(如果您已经安装了这个包,可以使用composer update blackbit/better-search --with-dependencies进行更新)。

最后,您需要通过浏览器UI或CLI(bin/console pimcore:bundle:enable BlackbitBetterSearchBundle && bin/console pimcore:bundle:install BlackbitBetterSearchBundle)启用并安装插件。

您可以通过CLI执行composer update blackbit/better-search --with-dependencies来始终获取最新版本。

重新创建搜索索引

默认情况下,在安装过程中将启动一个后台进程,该进程将索引所有现有Pimcore元素的数据库。

每次元素被保存时,搜索索引都会更新(与Pimcore默认操作方式相同)。

要手动重新创建搜索索引,您可以执行CLI命令bin/console better-search:create-index