1 个不稳定版本

0.1.0 2020年10月19日

#13#meilisearch

每月 23 次下载
用于 meilimelo

MIT 许可协议

4KB

meilimelo

Meilimelo 是一个简单的库,用于对 MeiliSearch 进行查询。

示例

use meilimelo::prelude::*;

#[meilimelo::schema]
struct Employee {
  firstname: String,
  lastname: String,
  roles: Vec<String>
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let meili = MeiliMelo::new("https://meilisearch.example.com:7700")
      .with_secret_key("helloworld");

    let employees = meili
        .search("employees")
        .query("johnson")
        .run::<Employee>()
        .await?;

    println!("Hits: {}", people.hits);

    for person in &people {
        println!("{} {}", person.firstname, person.lastname);
    }

    Ok(())
}

使用 meilimelo::schema 属性宏可以将您的模式派生为可以用于 MeiliSearch 搜索结果的类型(例如,当需要时自动添加 _formatted 子对象)。

查询

MeiliSearch 的大多数查询参数都由 meilimelo 处理。它们都可以通过请求构建器添加。

查询、筛选、限制和偏移量

meili
  .search("employees")
  .query("johnson")
  .filters("age > 23 AND location = Paris")
  .limit(10)
  .offset(5);

面元

meili
  .search("employees")
  .facets(FacetBuilder::new("company", "ACME Corp").or("company", "Big Corp").and("roles", "CXM").build())
  .distribution(&["roles"]);

输出设置

meili
  .attributes(&["firstname", "lastname", "bio"])
  .crop(&[Crop::At("bio", 32)])
  .crop_length(10)
  .highlight(&["bio"])
  .matches(true);

索引管理

可以执行索引的基本操作

// Creating index
meili.create_index("employees", "Employees")?;

// Listing indices
for index in &meili.indices().await? {
  println!("{}", index.name);
}

文档管理

您可以以以下方式索引一组 Serialize 文档(还支持列出和删除文档)

// Indexing documents
let doc = Employee {
  firstname: "Luke".to_string(),
  lastname: "Skywalker".to_string()
};

meili.insert("employees", vec![doc]);

// Looping over in-order documents
for doc in &meili.list_documents::<Employee>("employees").await? {
  println!("{} {}", doc.firstname, doc.lastname);
}

// Getting document via primary key
let doc = meili.get_document::<Employee>("employees", "lskywalker").await?;

println!("{} {}", doc.firstname, doc.lastname);

// Deleting document
meili.delete_document("employees", "lskywalker").await?;

依赖关系

~1.2–1.6MB
~39K SLoC