# Unobtanium Graph Algorithms
This rust crate implements graph ranking algorithms for the [unobtanium search engine](https://codeberg.org/unobtanium).
Currently implemented Algorithms are:
* [PageRank](https://en.wikipedia.org/wiki/PageRank#Algorithm) (needs fixes, only works for undirected graphs right now)
* [TextRank](https://en.wikipedia.org/wiki/Automatic_summarization#Unsupervised_approach:_TextRank)
## Overview
At the core of this crate is the `Graph` data structure, which can be populated with arbitrary data (Must implement `Hash`, `Eq` and `Clone`) that represents nodes.
On top of this Graph functions like `populate_for_textrank()` and `run_pagerank()` can prepare the graph and run different algorithms on it.
Custom graph configurations can be realized by populating the graph inside a callback to its `modify` method. The callback is to make sure that node ids inside the graph stay opaque and can't be confused with the ids of another graph structure. (This is called [Data Branding](https://plv.mpi-sws.org/rustbelt/ghostcell/))
## License
The Unobtanium Graph Algorithms crate is licensed as [LGPL-3.0-only](./LICENSES/LGPL-3.0-only.txt).
The project aims to be compliant with version 3.3 of the [reuse](https://reuse.software) specification.