myMPD
Internal API documentation
Loading...
Searching...
No Matches
search_fuzzy.c File Reference

Fuzzy search implementation. More...

#include "src/lib/search/search_fuzzy.h"
#include <stdlib.h>
#include <string.h>
Include dependency graph for search_fuzzy.c:

Macros

#define MIN3(a, b, c)

Functions

static size_t levenshtein (const char *a, size_t a_len, const char *b, size_t b_len, size_t *cache, size_t max_distance)
bool mympd_search_fuzzy_match (const char *haystack, size_t haystack_len, const char *needle, size_t needle_len)

Detailed Description

Fuzzy search implementation.

Macro Definition Documentation

◆ MIN3

#define MIN3 ( a,
b,
c )
Value:
((a) < (b) ? ((a) < (c) ? (a) : (c)) : ((b) < (c) ? (b) : (c)))

Private functions Return the minimum of 3 integers

Function Documentation

◆ levenshtein()

size_t levenshtein ( const char * a,
size_t a_len,
const char * b,
size_t b_len,
size_t * cache,
size_t max_distance )
static

Private definitions

Calculate the levenshtein distance https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#C

Parameters
aString 1
a_lenLength of a
bString 2
b_lenLength of b
cacheMatrix cache
max_distanceReturn as soon as the calculated distance is smaller than this value
Returns
Calculated distance

◆ mympd_search_fuzzy_match()

bool mympd_search_fuzzy_match ( const char * haystack,
size_t haystack_len,
const char * needle,
size_t needle_len )

Public functions Fuzzy substring matching using the levenshtein distance

Parameters
haystackHaystack
haystack_lenHaystack length
needleNeedle
needle_lenNeedle length
Returns
true on match, else false