前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实时通信 | 轻量级搜索引擎MeiliSearch

实时通信 | 轻量级搜索引擎MeiliSearch

作者头像
Tinywan
发布2023-03-08 20:19:44
1.7K0
发布2023-03-08 20:19:44
举报
文章被收录于专栏:开源技术小栈开源技术小栈

Part1介绍

MeiliSearch是一个功能强大,快速,开源,易于使用和部署的搜索引擎。搜索和索引都是高度可定制的。允许输入、过滤器和同义词等特性都是开箱即用的。是近两年开源的项目,同样也支持中文分词,在小数据规模下可以实现比ElasticSearch更加快速和易用的搜索体验。

Part2支持的功能

  • 开源
  • 用户量(开源搜索引擎第二名)
  • 中文分词
  • 同义词
  • 纠错
  • 高亮
  • 全文返回
  • 高级搜索
  • 停用词、停用字段
  • 加权、降权
  • 逻辑搜索
  • 唯一字段聚合
  • 分页
  • 重新索引

Part3使用

1第 1 步:设置和安装

我们将从下载和安装 Meilisearch 开始。您可以选择在本地安装 Meilisearch 或通过云服务部署,以下使用Docker部署服务端。

Docker部署

代码语言:javascript
复制
# Fetch the latest version of Meilisearch image from DockerHub
docker pull getmeili/meilisearch:latest

# Launch Meilisearch
docker run -it --rm \
    -p 7700:7700 \
    -v d:/work/meilisearch/data.ms:/data.ms \
    getmeili/meilisearch:latest

运行Meilisearch

成功运行 Meilisearch 后,您应该会看到以下响应:

恭喜!您已准备好继续下一步!

2第 2 步:添加文档

对于这个快速入门,我们将使用PHP作为客户端演示案例

安装PHP的SDK

代码语言:javascript
复制
composer require meilisearch/meilisearch-php \
    guzzlehttp/guzzle \
    http-interop/http-factory-guzzle:^1.0

SDK 地址 https://github.com/meilisearch/meilisearch-php/

添加索引文档

代码语言:javascript
复制
require_once __DIR__ . '/vendor/autoload.php';

use MeiliSearch\Client;

$client = new Client('http://192.168.3.12:7700');

# An index is where the documents are stored.
$index = $client->index('movies');

$documents = [
    ['id' => 1,  'title' => 'Carol', 'genres' => ['Romance, Drama']],
    ['id' => 2,  'title' => 'Wonder Woman', 'genres' => ['Action, Adventure']],
    ['id' => 3,  'title' => 'Life of Pi', 'genres' => ['Adventure, Drama']],
    ['id' => 4,  'title' => 'Mad Max: Fury Road', 'genres' => ['Adventure, Science Fiction']],
    ['id' => 5,  'title' => 'Moana', 'genres' => ['Fantasy, Action']],
    ['id' => 6,  'title' => 'Philadelphia', 'genres' => ['Drama']],
];

# If the index 'movies' does not exist, Meilisearch creates it when you first add the documents.
$index->addDocuments($documents); // => { "uid": 0 }

3第 三 步:使用文档

基础搜索

代码语言:javascript
复制
$client = new Client('http://192.168.3.12:7700');
 
# An index is where the documents are stored.
$index = $client->index('movies');
// Meilisearch is typo-tolerant:
$hits = $index->search('wondre woman')->getHits();
print_r($hits);

打印信息

自定义搜索

代码语言:javascript
复制
require_once __DIR__ . '/vendor/autoload.php';

use MeiliSearch\Client;

$client = new Client('http://192.168.3.12:7700');
$index->search(
    'phil',
    [
        'attributesToHighlight' => ['*'],
    ]
)->getRaw(); // Return in Array format

输出结果

代码语言:javascript
复制
{
    "hits": [
        {
            "id": 6,
            "title": "Philadelphia",
            "genre": ["Drama"],
            "_formatted": {
                "id": 6,
                "title": "<em>Phil</em>adelphia",
                "genre": ["Drama"]
            }
        }
    ],
    "offset": 0,
    "limit": 20,
    "processingTimeMs": 0,
    "query": "phil"
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Part1介绍
  • Part2支持的功能
  • Part3使用
    • 1第 1 步:设置和安装
      • 2第 2 步:添加文档
        • 3第 三 步:使用文档
        相关产品与服务
        容器镜像服务
        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档