Meilisearch Vapor 是官方 Meilisearch for Swift API 客户端的一个轻量级封装,旨在与 Vapor(一个服务器端 Swift 框架)兼容。
Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,并已集成到 swift
编译器中。
设置好 Swift 包后,将 MeiliSearchVapor 添加为依赖项非常简单,只需将其添加到 Package.swift
文件的 dependencies
值中即可。
dependencies: [
.package(url: "https://github.com/sherlouk/meilisearch-vapor.git", from: "0.1.0")
]
有很多简单的方法可以下载并运行 Meilisearch 实例。
例如,在您的终端中使用 curl
命令
#Install Meilisearch
curl -L https://install.meilisearch.com | sh
# Launch Meilisearch
./meilisearch --master-key=masterKey
注意:您也可以从 Homebrew 或 APT 下载 Meilisearch,甚至可以使用 Docker 运行它。
要使用客户端进行简单的插入操作,您可以创建一个像这样的 Swift 脚本
import MeiliSearchVapor
// in your Vapor startup:
func configure(app: Application) throws {
app.meilisearch.configure(host: "https://:7700")
}
// in your Vapor route:
app.post("addDocuments") { req -> EventLoopFuture<String> in
let promise = req.eventLoop.makePromise(of: String.self)
struct Movie: Codable, Equatable {
let id: Int
let title: String
let genres: [String]
}
let movies: [Movie] = [
Movie(id: 1, title: "Carol", genres: ["Romance", "Drama"]),
Movie(id: 2, title: "Wonder Woman", genres: ["Action", "Adventure"]),
Movie(id: 3, title: "Life of Pi", genres: ["Adventure", "Drama"]),
Movie(id: 4, title: "Mad Max: Fury Road", genres: ["Adventure", "Science Fiction"]),
Movie(id: 5, title: "Moana", genres: ["Fantasy", "Action"]),
Movie(id: 6, title: "Philadelphia", genres: ["Drama"])
]
// An index is where the documents are stored.
// The uid is the unique identifier to that index.
let index = req.meilisearch.index("movies")
// If the index 'movies' does not exist, Meilisearch creates it when you first add the documents.
index.addDocuments(
documents: movies,
primaryKey: nil
) { result in
switch result {
case .success(let task):
print(task) // => Task(uid: 0, status: "enqueued", ...)
promise.succeed(String(describing: task))
case .failure(let error):
promise.fail(error)
}
}
return promise.futureResult
}