resonatecoop / search

Search API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

đź›  Status: Maintenance Mode | Stable

This project is currently in maintenance mode - users should feel free to continue to use this app and expect bug fixes, but not expect many additional features.

Resonate Search Demo

Stack

  • Mongodb with mongoose and mongoosastic
  • Elasticsearch
  • Koajs

Models

  • Track
  • Profile
  • Release

Sync data

To save/update data into elasticsearch, the following script needs to be ran

babel-node -r ./node_modules/dotenv-safe/config ./src/scripts/migrate run

It's configured to connect to our wordpress db which also have a table for tracks.

Query

With no minimum query length, fuzzy query is possible. The results will be merged and sorted by score.

Use the 'kind' field to identify the model (track|artist|label|band)

[
  {
    "kind": "track",
    "title": "capitalism crashed",
    "display_artist": "AGF",
    "album": "capitalism crashed",
    "tags": ["experimental"]
  }
]

Flow

st=>start: Search API
e=>end: Return error
query=>operation: Query
cond=>condition: Invalid query?
io=>inputoutput: catch error...
para=>parallel: Search tracks and profiles
response=>end: Return merged results sorted by score

st->query->cond
cond(no)->para
cond(yes)->io->e
para(path1, bottom)->response(right)
para(path2, top)

UI Design

alt text

About

Search API

License:MIT License


Languages

Language:JavaScript 96.9%Language:Shell 1.6%Language:Dockerfile 1.5%