Crate perlin [] [src]

Perlin is a free and open source information retrieval library.

Version 0.1.0


  • boolean retrieval on arbitrary types
  • minimal dependencies
  • lazy and zero-allocation query evaluation

Basic Usage

Add Perlin to Cargo.toml

perlin = "0.1"

and import it in your crate root:

extern crate perlin;

Build index and run queries

use perlin::index::Index;
use perlin::storage::RamStorage;
use perlin::index::boolean_index::{QueryBuilder, IndexBuilder};

//Use `IndexBuilder` to construct a new Index and add documents to it.
//Perlin does not dictate what "documents" are.
//Rather it expects iterators over iterators over terms.
//In our case a "document" consists of a series of `usize` values:
let index = IndexBuilder::<_, RamStorage<_>>::new().create(vec![(0..10),
(0..15), (10..34)].into_iter()).unwrap();

//Now use the `QueryBuilder` to construct a query
//Simple query for the number 4
let simple_query = QueryBuilder::atom(4).build();

//When executing queries the index does not evaluate return all results at once.
//Rather it runs lazily and returns an iterator over the resulting document ids.
for id in index.execute_query(&simple_query) {
   println!("{}", id); //Will print 0 and 1

Have a look in the examples folder for more elaborate examples!



Provides everything needed for building and querying indices.


This module will provide the necessary utilities to handle language well in regard of Information Retrieval.


This module contains the trait Storage and implementations of it.