View Source SpiritFingers

"Fast SimHash NIFs written in Rust 🐇💨 as Erlang/Elixir versions were too slow 🐢"

logo

build

Build

mix compile

test

Test

mix test

versions

Versions

  • Elixir ~> 1.14
  • OTP 25
  • Rust 2021 ~> 1.67.0
  • Rustler 0.27.0

installation

Installation

Add spirit_fingers to your list of dependencies in mix.exs:

def deps do
  [
    {:spirit_fingers, "~> 0.4.0"}
  ]
end

usage

Usage

Generate SimHash:

SpiritFingers.SimHash.similarity_hash("wow")
{:ok, 17399923637769257768}

Similarity between strings:

SpiritFingers.SimHash.similarity("Hocus pocus", "Hocus pocus pilatus pas")
{:ok, 0.9375}

Hamming Distance between hashes:

SpiritFingers.SimHash.hamming_distance(17399923637769257768, 17399923637769257768)
{:ok, 0.0}

Similarity between hashes:

SpiritFingers.SimHash.hash_similarity(17399923637769257768, 17399923637769257768)
{:ok, 1.0}