intracto/elastic-synonym 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

intracto/elastic-synonym

Composer 安装命令:

composer require intracto/elastic-synonym

包简介

Update and refresh elasticsearch synonyms

README 文档

README

This library reads/writes elasticsearch synonyms and converts them into an array of editable objects. A refresh action can be called whenever you want to make the updated synonyms available for your users.

See intracto/elastic-synonym-bundle for a plug-and-play implementation for symfony 4.4+ using bootstrap.

Note: make sure you're using a query that supports analyzing, like the regular match filter (example below).

Additional requirements:

  • Elasticsearch 7.3+
  • Synonym filter must be applied to the search analyzer. It won't work for index analyzers

Installation

$ composer require intracto/elastic_synonym

Synonym file on filesystem

There are a few limitations we need to work around:

  • Elasticsearch will only read wherever the current config file is located (usually /etc/elasticsearch)
  • Our webuser on the filesystem will propably have not the permissions to write to the desired directory.

This is why we choose to work with a symlink. This can also be implemented as you want, but here is a working example using vagrant:

$ mkdir /vagrant/.elastic-synonym
$ touch /vagrant/.elastic-synonym/synonyms.txt # name the file anyway you want

$ sudo ln -s /vagrant/.elastic-synonym /etc/elasticsearch/analytics

Synonym filter in elastic

Add the following filter under settings.analysis.filter:

'my_synonyms' => [ // a name for your filter
    'type' => 'synonym_graph',
    'synonyms_path' => 'analytics/synonyms.txt', // This needs to be the path inside /etc/elastic.
    'updateable' => true, // *must* be true
],

If you want to add it to your default search analyzer, add the following settings under settings.analysis.analyzer:

'default_search' => [
    // ..
    'filter' => [/*'..', */'my_synonyms'],
],

A simple example (assuming you're using defaults and added the filter to your default_search):

$body['query']['bool']['should'][] = ['match' => ['description' => [
    'query' => 'this is an example',
    'fuzziness' => 'AUTO',
    'operator' => 'OR',
]]];

intracto/elastic-synonym 适用场景与选型建议

intracto/elastic-synonym 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 930 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 09 月 15 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 intracto/elastic-synonym 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 intracto/elastic-synonym 我们能提供哪些服务?
定制开发 / 二次开发

基于 intracto/elastic-synonym 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 930
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 12
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 6
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-09-15