Typesense配置

在 fecify中进行typesense的配置,您需要先安装好typesense,然后才能进行相关的配置

typesense配置

店铺添加搜索引擎插件后,您在商家端后台,进入搜索引擎插件

1.状态关闭

  • 如上图,将状态都关闭
  • 因为typesese还没有配置,没有创建表结构,也没有同步数据。因此先进行关闭,等这些工作处理完成后在打开这些选项

2.配置:

  • Host:默认一般是http,如果您配置了https,请选择https。后面是IP,如果您配置了域名,那么填写域名即可
  • Port:端口,需要注意的是,您的服务器的端口一定要打开,可以外部访问。
  • Api Key: 访问typesense的密码

配置完成后保存即可

创建搜索表结构

1.创建图搜索表

前台商城,搜索栏,如果您想要支持图片搜索,那么您需要创建图搜索表,点击按钮即可

2.创建商品搜索表

搜索引擎的文本搜索,不同的语言分词不同,因此,需要每个语言对应一张表

2.1选择语言

2.2选择规格属性

商品存在很多的规格属性,但您并不想将所有的规格属性都加入侧栏属性过滤(搜索页面和专辑页面,商品列表侧栏的属性过滤部分),您可以在这里勾选,譬如:勾选color,size

2.3选择附件属性

在使用之前,您需要先创建商品附加属性:Fecify 商品附加属性

创建后,即可在这里进行添加

2.4点击右上角的按钮:创建搜索表,保存即可

2.5查看创建好的搜索表

您可以点击表结构按钮,查看typesense创建的表结构

2.6查看表数据

2.7表数据列表,点击查看详细

到这里,表结构就创建好了,表结构创建完成后,表结构是不可以编辑的。只能将搜索表删除,然后重新创建, 删除后,搜索表以及表数据将全部删除,您需要重新同步数据。因此,创建表结构,尽量一次性配好

另外,每个多语言,表结构需要一致,譬如:您已经创建了表结构,后来随着业务扩展需要增加一个语言,然后创建一个新的语言对应的搜索表,那么您的这个新语言的表结构 需要原来的一致(也就是创建搜索表,选择的规格属性和附加属性保持一致)

批量同步数据

表结构创建完成后,您就可以批量同步数据,在同步数据的过程中,不要编辑商品数据,同步完成后在编辑商品数据。

商品数据的同步,是task脚本,由于这个过程中需要下载图片,生成图片base64编码,传递给typesense(用于图片搜索),而且每个语言对应单独的搜索表, 因此语言越多,同步的次数越多,这个过程是比较慢的。

同步过程中,您可以在搜索表中查看商品的条数。

打开配置

当您表结构创建完成后,批量同步全部商品完成,您就可以打开插件了。打开插件意味着前台的搜索,专辑,将走typesense搜索引擎的逻辑,而不是mysql数据库/

打开选项,进行保存。然后刷新系统缓存,cloudflare缓存,然后去前台商城查看具体效果。

到这里就完成了。

允许IP访问

对于8108端口对外开放,您只允许特定IP请求,您可以使用iptables做限制

  1. 使用防火墙

配置服务器的防火墙(如 iptables、ufw)只允许特定 IP 地址访问 Typesense 的端口(默认是 8108)。以下是一些基本的防火墙配置示例:

对于 iptables:

# 允许特定 IP 访问 
iptables -A INPUT -p tcp -s YOUR_ALLOWED_IP --dport 8108 -j ACCEPT 
# 拒绝其他所有访问 
iptables -A INPUT -p tcp --dport 8108 -j DROP

对于 ufw:

sudo ufw allow from YOUR_ALLOWED_IP to any port 8108  
sudo ufw deny 8108
  1. 在代理层做限制

如果您的 Typesense 部署通过反向代理(如 Nginx)来实现,可以在 Nginx 中配置只允许特定 IP 访问 Typesense。示例如下:

server {
    listen 80;  

    location / {  
        allow YOUR_ALLOWED_IP;  # 允许的 IP 地址  
        deny all;               # 拒绝所有其他访问  

        proxy_pass http://localhost:8108;  # 注意:根据您的配置可能需要修改此行  
    }  
}
Copyright © fecify.com 2022 all right reserved,powered by Gitbook该文件修订时间: 2024-08-05 22:19:19

results matching ""

    No results matching ""