1
0
Fork 0
mirror of https://github.com/em-squared/5e-drs.git synced 2025-10-30 05:04:21 +00:00
This commit is contained in:
Mathieu Lecarme 2024-11-23 17:56:58 +01:00 committed by GitHub
commit 9e955c97b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 115 additions and 0 deletions

2
contrib/meilisearch/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
venv
data.ms

View file

@ -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

View file

@ -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).

View file

@ -0,0 +1,11 @@
---
version: "3"
services:
meilisearch:
image: getmeili/meilisearch:latest
volumes:
- ./data.ms:/data.ms
ports:
- 7700:7700

57
contrib/meilisearch/index.py Executable file
View file

@ -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)

View file

@ -0,0 +1,3 @@
pyyaml
meilisearch
markdown