#search-index #indexing #index #search #elasticlunr #lunr

elasticlunr-rs

A partial port of elasticlunr.js to Rust for generating static document search indexes

25 stable releases (3 major)

3.0.2 Mar 17, 2023
3.0.1 Jul 24, 2022
3.0.0 Jun 2, 2022
2.3.14 Nov 16, 2021
0.2.1 Nov 21, 2017

#46 in Database interfaces

Download history 20960/week @ 2024-07-30 20576/week @ 2024-08-06 19110/week @ 2024-08-13 19757/week @ 2024-08-20 21111/week @ 2024-08-27 22122/week @ 2024-09-03 19110/week @ 2024-09-10 20853/week @ 2024-09-17 20913/week @ 2024-09-24 20676/week @ 2024-10-01 21615/week @ 2024-10-08 24128/week @ 2024-10-15 21093/week @ 2024-10-22 20625/week @ 2024-10-29 20780/week @ 2024-11-05 16997/week @ 2024-11-12

82,739 downloads per month
Used in 15 crates (10 directly)

MIT/Apache

145KB
6K SLoC

elasticlunr-rs

Build Status Documentation Crates.io Maintenance MSRV

A partial port of elasticlunr.js to Rust. Intended to be used for generating compatible search indices.

This library is passively maintained to support existing users. New users are encouraged to use a different library such as stork.

Example

use std::fs::File;
use std::io::Write;
use elasticlunr::Index;

let mut index = Index::new(&["title", "body"]);
index.add_doc("1", &["This is a title", "This is body text!"]);
// Add more documents...
let mut file = File::create("out.json").unwrap();
file.write_all(index.to_json_pretty().as_bytes());

Minimum Supported Rust Version

1.60.0

Changing the minimum supported Rust version is not considered a breaking change for semver purposes.

The supported version is constrained by the version supported by our transitive dependencies. Earlier rustc versions may work if you have older versions of these in your Cargo.lock, but this is not tested.

Languages

This library includes optional support for non-English languages, see the features in Cargo.toml. Like in the JavaScript version, the language support is designed to be compatible with the lunr-languages plugins. Some languages use a modified version, which is included in the js directory of the repository.

License

This repository is offered under the terms of the

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Includes code ported from elasticlunr.js Copyright (C) 2017 by Wei Song, used under license. See LICENSE-JS for details.

Includes stop word lists ported from stopwords-filter Copyright (C) 2012 David J. Brenes, used under license. See LICENSE-WORDS for details.

Bundled javascript code in the repository (not included in the cargo package) may have other licenses.

Dependencies

~3–14MB
~148K SLoC