Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions contrib/meilisearch/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
venv
data.ms
23 changes: 23 additions & 0 deletions contrib/meilisearch/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

up:
docker-compose up -d
docker ps

index: venv
./venv/bin/python index.py

venv:
python3 -m venv venv
./venv/bin/pip install -U pip wheel
./venv/bin/pip install -r requirements.txt

down:
docker-compose down

purge:
make down
rm -rf data.ms
make up

pull:
docker-compose pull
19 changes: 19 additions & 0 deletions contrib/meilisearch/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Meilisearch

Indexation naïve et systématique du contenu.

Fonctionne avec un [meilisearch](https://www.meilisearch.com/) local, ou dans un conteneur, tant que ça écoute http://localhost:7700

## Demo

Lance meilisearch dans un conteneur

make up

Index le site (avec du code en python)

make index

Mailisearch propose une UI web pour tester la recherche : [http://localhost:7700](http://localhost:7700)

Il est possible de copier l'index, le dossier `data.ms` sur un serveur, pour effectuer des recherches (en lecture seule).
11 changes: 11 additions & 0 deletions contrib/meilisearch/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---

version: "3"

services:
meilisearch:
image: getmeili/meilisearch:latest
volumes:
- ./data.ms:/data.ms
ports:
- 7700:7700
57 changes: 57 additions & 0 deletions contrib/meilisearch/index.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/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())
# removing ../../, README.md and replace / with _
yield str(readme)[11:-10].replace("/", "_"), 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("the index is created")
else:
print("the index is already here")

for path, title, body in pages():
client.index('pages').add_documents([{
'path': path,
'title': title,
'body': body,
}])
print(title, path)
3 changes: 3 additions & 0 deletions contrib/meilisearch/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
pyyaml
meilisearch
markdown