1 个不稳定版本

0.1.0 2020年10月19日

#2877数据库接口

MIT 许可证

27KB
496

meilimelo

Crates.io

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?;

依赖项

~10–14MB
~280K SLoC