From 1aa2a1628939d8e9d9c43406a0d1cda8729d9c09 Mon Sep 17 00:00:00 2001 From: Mathieu Lecarme Date: Sun, 3 Apr 2022 12:24:03 +0200 Subject: [PATCH] Draft. --- contrib/meilisearch/.gitignore | 2 + contrib/meilisearch/Makefile | 12 ++++++ contrib/meilisearch/docker-compose.yml | 11 ++++++ contrib/meilisearch/index.py | 54 ++++++++++++++++++++++++++ contrib/meilisearch/requirements.txt | 3 ++ 5 files changed, 82 insertions(+) create mode 100644 contrib/meilisearch/.gitignore create mode 100644 contrib/meilisearch/Makefile create mode 100644 contrib/meilisearch/docker-compose.yml create mode 100755 contrib/meilisearch/index.py create mode 100644 contrib/meilisearch/requirements.txt diff --git a/contrib/meilisearch/.gitignore b/contrib/meilisearch/.gitignore new file mode 100644 index 0000000..9ee05fe --- /dev/null +++ b/contrib/meilisearch/.gitignore @@ -0,0 +1,2 @@ +venv +data.ms diff --git a/contrib/meilisearch/Makefile b/contrib/meilisearch/Makefile new file mode 100644 index 0000000..c084e76 --- /dev/null +++ b/contrib/meilisearch/Makefile @@ -0,0 +1,12 @@ + +venv: + python3 -m venv venv + ./venv/bin/pip install -U pip wheel + ./venv/bin/pip install -r requirements.txt + +up: + docker-compose up -d + docker ps + +pull: + docker-compose pull diff --git a/contrib/meilisearch/docker-compose.yml b/contrib/meilisearch/docker-compose.yml new file mode 100644 index 0000000..6b88b9b --- /dev/null +++ b/contrib/meilisearch/docker-compose.yml @@ -0,0 +1,11 @@ +--- + +version: "3" + +services: + meilisearch: + image: getmeili/meilisearch:latest + volumes: + - ./data.ms:/data.ms + ports: + - 7700:7700 diff --git a/contrib/meilisearch/index.py b/contrib/meilisearch/index.py new file mode 100755 index 0000000..4a98b72 --- /dev/null +++ b/contrib/meilisearch/index.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 + +from pathlib import Path +from io import StringIO + +import yaml +from markdown import markdown +from meilisearch import Client + + +def pages(): + "return all pages" + for readme in Path('.').glob('**/README.md'): + if readme == Path("README.md"): # it's the home + continue + with open(readme, 'r') as file: + head = StringIO() + body = StringIO() + state = None + for line in file: + if state is None and line == "---\n": + state = "head" + continue + if state == "head": + if line == "---\n": + state = "body" + continue + head.write(line) + else: + body.write(line) + if head.tell() == 0: # empty + continue + head.seek(0) + head = yaml.safe_load(head) + body.seek(0) + txt = markdown(body.read()) + yield str(readme), head['title'], txt + + +if __name__ == "__main__": + client = Client('http://127.0.0.1:7700') + try: + idx = client.get_index('pages') + except Exception: + client.create_index('pages', dict(primaryKey='path')) + print(idx) + + for path, title, body in pages(): + client.index('pages').add_documents([{ + 'path': path, + 'title': title, + 'body': body, + }]) + print(title) diff --git a/contrib/meilisearch/requirements.txt b/contrib/meilisearch/requirements.txt new file mode 100644 index 0000000..5fac84f --- /dev/null +++ b/contrib/meilisearch/requirements.txt @@ -0,0 +1,3 @@ +pyyaml +meilisearch +markdown