当前位置: 代码网 > it编程>编程语言>其他编程 > ES代替品:轻量级搜索引擎MeiliSearch

ES代替品:轻量级搜索引擎MeiliSearch

2024年08月02日 其他编程 我要评论
总的来说,对于数据量不是很大的中小型企业来说(几百万到几千万的数据),都可以使用 MeiliSearch 搜索引擎。同时,它的使用场景基本可以覆盖当前主流的平台和技术,如管理后台搜索、小程序搜索等场景中。是一款真正轻量级安装部署、搜索速度快到极致,名副其实的轻量级且美丽搜索引擎。

痛点

虽然elasticsearch足够灵活强大、扩展性和实时性也较好。但是对于中小型项目来说,elasticsearch还是显得有些庞大,对硬件设备的要求也较高。那么,在要求不是很高的情况下,我们可以考虑另一种搜索引擎方案:meilisearch。

meilisearch是一个功能强大、快速、开源、易于使用和部署的搜索引擎,并且meilisearch的搜索和索引都是高度可定制的,提供开箱即用的功能属性,如错字容忍、过滤器和同义词。而最重要的一点是,它【支持中文搜索】,而不需要添加额外的配置。

特性

它具有以下特点:

  • 快速: meilisearch旨在提供快速的搜索速度。使用meilisearch,用户可以在毫秒级别内获取查询结果,即使在大数据集上也是如此。
  • 精度高: meilisearch采用先进的算法来确保搜索结果的准确性。它支持拼写修正、同义词替换、近义词搜索等功能,这些功能可以大大提高搜索结果的质量。
  • 可定制性强: meilisearch具有灵活的api,可以轻松集成到任何应用程序中。它还支持自定义排名、字段权重和搜索范围等功能。
  • 易于使用: meilisearch的安装和设置过程非常简单,并且它提供了易于使用的web界面和cli工具,使用户可以轻松管理和监控搜索引擎。

快速

在官方网站上提供了一些性能比较数据和基准测试结果,这些测试结果显示meilisearch在处理大型数据集时速度非常快,可以在毫秒级别内返回查询结果。

例如,在官方提供的基准测试中,使用meilisearch处理10万个文档时,平均搜索时间为1.47毫秒,而使用elasticsearch搜索同样的数据集时,平均搜索时间为44.1毫秒。这表明,meilisearch在速度方面比其他一些搜索引擎更快,并且可以在大规模数据集上实现高效搜索。

高精度搜索

meilisearch的第二个特点是高精度搜索。为了实现这个特点,meilisearch使用了多种算法和技术,包括:

  • 拼写纠正:当用户拼写单词错误时,meilisearch可以自动检测并纠正拼写错误,从而提供更准确的搜索结果。
  • 同义词替换:meilisearch支持同义词替换,当用户输入一个词时,搜索引擎会将其替换为相关的同义词,从而扩展搜索范围并提供更准确的搜索结果。
  • 近义词搜索:meilisearch还支持近义词搜索,当用户输入一个词时,搜索引擎会在索引中查找相关的近义词,并将它们包含在搜索结果中。

除了上述功能,meilisearch还支持模糊搜索、停用词过滤、基于短语和前缀的搜索等多种功能,这些功能可以大大提高搜索结果的质量和准确性。总之,meilisearch通过多种算法和技术来提高搜索结果的准确性和质量,使其成为一种高精度的搜索引擎。

可定制性强

meilisearch的第三个特点是可定制性强。它提供了灵活的api,使开发人员可以根据自己的需求自定义搜索引擎的各种功能和特性,包括:

  • 自定义排名:开发人员可以根据自己的需求自定义搜索结果的排名方式,以确保最相关的结果在搜索结果列表中排名靠前。
  • 字段权重:开发人员可以指定搜索引擎在搜索过程中应该优先考虑哪些字段,以提高搜索结果的准确性。
  • 搜索范围:开发人员可以限制搜索的范围,例如只搜索特定的字段或文档类型,以提高搜索结果的质量。

以下是一些示例:

假设我们有一个在线书店,我们想要实现一种搜索功能,可以搜索书名、作者、出版社等字段,并且希望搜索结果按照出版日期的先后顺序排列。我们可以使用meilisearch的api来实现这个功能,例如:

import io.github.crew102.meilisearchjava.client;
import io.github.crew102.meilisearchjava.index;

public class meilisearchdemo {
    public static void main(string[] args) {
        // create a meilisearch client object
        client client = new client("http://localhost:7700", "masterkey");
        
        // get an index
        index index = client.getindex("books");
        
        // define search parameters
        searchparams params = new searchparams()
            .setsort(collections.singletonlist("published_date"))
            .setattributestohighlight(arrays.aslist("title", "author", "publisher"))
            .setattributestoretrieve(arrays.aslist("title", "author", "publisher", "published_date"));
            
        // perform search
        searchresults<book> results = index.search("harry potter", book.class, params);
        
        // print search results
        for (searchresult<book> hit : results.gethits()) {
            book book = hit.getresult();
            system.out.println(book.gettitle() + " by " + book.getauthor() + " published by " + book.getpublisher() + " on " + book.getpublisheddate());
        }
    }
}

在上面的示例中,我们首先创建了一个meilisearch客户端对象,然后定义了一些搜索参数,例如按照出版日期排序、高亮显示标题、作者和出版商等。接下来,我们使用meilisearch的search方法来执行搜索,并遍历搜索结果以打印出书名、作者、出版社和出版日期等信息。

支持多语言搜索

meilisearch的第五个特点是支持多语言搜索。这意味着meilisearch能够搜索多种语言的文本,并且可以正确处理每种语言的语法和语义。这种功能对于需要支持全球用户的应用程序非常有用,例如国际化的电子商务平台、跨语言的新闻网站等。

meilisearch支持的语言非常多,包括但不限于英语、中文、日语、韩语、法语、德语、西班牙语、意大利语、荷兰语、葡萄牙语、俄语、阿拉伯语、希伯来语等等。meilisearch能够支持如此多种语言的搜索,主要得益于其内置的各种语言处理工具,例如分词器、词干提取器、同义词扩展器、语义分析器等等。

部署安装

环境:ubuntu
部署方式:docker
编排工具:dockercompose

配置信息:

version: '3'

services:
  meilisearch:
    image: getmeili/meilisearch:latest
    container_name: meilisearch
    restart: always
    environment:
      meili_http_addr: 0.0.0.0:7700
      #  meili_master_key: meilisearchmasterkey
    ports:
      - 7700:7700
    volumes:
      - meilisearch_data:/data.ms

volumes:
  meilisearch_data:

  • 执行安装命令

docker-compose -f meilisearch_compose.yaml stop docker-compose

  • 下载测试数据

测试数据地址:https://docs.meilisearch.com/movies.json

  • 导入测试数据

curl  -x post 'http://localhost:7700/indexes/movies/documents?primarykey=id'   -h 'content-type: application/json'   --data-binary @movies.json

总结

总的来说,对于数据量不是很大的中小型企业来说(几百万到几千万的数据),都可以使用 meilisearch 搜索引擎。同时,它的使用场景基本可以覆盖当前主流的平台和技术,如管理后台搜索、小程序搜索等场景中。是一款真正轻量级安装部署、搜索速度快到极致,名副其实的轻量级且美丽搜索引擎

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com