图片说明

长期以来,中型数据集和小型应用程序都经历了搜索引擎不足的噩梦,导致搜索执行效果不佳导致用户体验和留存方面的隐性成本。互联网上可用的搜索引擎众多,开源和商业。为您的项目选择理想的搜索解决方案至关重要,但也很复杂。在本文中,我将讨论为什么 Meilisearch 是其他搜索引擎中的合适选择。

**什么是MeiliSearch?**🤔

MeiliSearch 是一个强大、快速、开源、易于使用和部署的搜索引擎。它是一个基于 REST 的搜索 API。它旨在为希望为其最终用户提供快速和相关搜索体验的每个人提供即用型解决方案。

  • 2018年由总部位于巴黎的Meili SAS公司创建

  • 开源搜索引擎

它承诺:

  • 为最终用户提供极快且相关的搜索体验

  • 具有可扩展性、可维护性、可定制性,并且易于为开发人员设置。

图片说明

为什么选择MeiliSearch?

它是一个免费的开源解决方案,任何人都可以使用,并且可以满足各种需求。它在安装时只需要很少的设置,但它是高度可定制的。凭借错字更正、过滤器、自定义排名等功能,它提供了即时的搜索体验。

MeiliSearch的特点💡

  • 键入时搜索 - 也称为“快速搜索”。当您仍在输入查询时,您会得到结果。当您在搜索框中键入更多文本时,显示的结果会实时改变。

  • 超相关 - MeiliSearch 的默认相关性规则旨在以最少的设置提供简单的搜索体验。可以对它们进行修补以获得数据集的最佳结果。

  • Typo 容错 - MeiliSearch 将始终找到您正在寻找的结果,而不是让拼写错误毁了您的搜索。

  • Synonyms - 同义词让您的搜索体验更加个性化和直观。

  • Highlighting - 突出显示查询短语以使匹配项脱颖而出。用户无需阅读完整的段落即可找到匹配项。

  • Filters - MeiliSearch 允许您将过滤器应用于搜索结果,以根据用户定义的条件减少它们。

  • Faceting - 它有助于对搜索结果进行分类和创建用户友好的导航界面。

  • Sorting - 通过在查询时对搜索结果进行排序,用户可以选择他们希望首先看到的结果类型。

  • Placeholder search - 如果您不使用任何查询词进行搜索,MeiliSearch 将返回该索引中的所有文档,按其自定义排名规则组织。

  • 短语搜索 - 如果您使用双引号 ("),MeiliSearch 将仅返回包含您指定顺序的搜索短语的文档。因此,用户将能够进行更精确的搜索。

  • API 密钥管理 - 在 MeiliSearch 中使用 API 密钥可以保护您的实例。您可以使用 API 密钥控制哪些用户可以访问特定的索引、路由和端点。

  • 全面的语言支持 - MeiliSearch是一个多语言搜索引擎!将支持全球社区中使用的每种语言。

模块的架构

主要分为两个部分:

  • Service,作为 MeiliSearch PHP 库的包装器服务。它的目的是对 MeiliSearch 服务器进行 API 调用。

  • 搜索 API 后端插件 扩展了搜索 API 模块的功能,并提供了一个可以附加索引的后端。

SearchAPI MeiliSearch演示

安装

安装和运行 meilisearch有很多方法。一定要检查出来。

NB: 您也可以从 Homebrew 或 APT 或 cURL 或其他下载 MeiliSearch。附上有关如何使用所有这些方式进行安装的链接。

在本文中,我将使用 pip3 命令行进行安装:

$ pip3 install meilisearch

进入全屏模式 退出全屏模式

入门:MeiliSearch Python

添加文档

import meilisearch

client = meilisearch.Client('http://127.0.0.1:7700', 'masterKey')

# An index is where the documents are stored.
index = client.index('books')

documents = [
  { 'book_id': 123,  'title': 'Pride and Prejudice' },
  { 'book_id': 456,  'title': 'Le Petit Prince' },
  { 'book_id': 1,    'title': 'Alice In Wonderland' },
  { 'book_id': 1344, 'title': 'The Hobbit' },
  { 'book_id': 4,    'title': 'Harry Potter and the Half-Blood Prince' },
  { 'book_id': 42,   'title': 'The Hitchhiker\'s Guide to the Galaxy' }
]

# If the index 'books' does not exist, MeiliSearch creates it when you first add the documents.
index.add_documents(documents) # => { "updateId": 0 }

进入全屏模式 退出全屏模式

基本搜索

# MeiliSearch is typo-tolerant:
index.search('harry pottre')

进入全屏模式 退出全屏模式

输出

{
  "hits" => [{
    "book_id" => 4,
    "title" => "Harry Potter and the Half-Blood Prince"
  }],
  "offset" => 0,
  "limit" => 20,
  "processingTimeMs" => 1,
  "query" => "harry pottre"
}

进入全屏模式 退出全屏模式

自定义搜索

index.search(
  'prince',
  {
    'attributesToHighlight': ['title'],
    'filters': 'book_id > 10'
  }
)

进入全屏模式 退出全屏模式

输出

{
    "hits": [
        {
            "book_id": 456,
            "title": "Le Petit Prince",
            "_formatted": {
                "book_id": 456,
                "title": "Le Petit <em>Prince</em>"
            }
        }
    ],
    "offset": 0,
    "limit": 20,
    "processingTimeMs": 10,
    "query": "prince"
}

进入全屏模式 退出全屏模式

模块兼容性

  • meilisearch - v0.18.1

带走

MeiliSearch 带有很多自定义选项。这些定制选项与其他搜索引擎提供的选项不同,只是:可选。立即试用MeiliSearch。晚点再谢我。

请随时通过Twitter或LinkedIn与我联系。请随时在评论会议上留下反馈。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐