agorakit / agorakit

Organization tool for citizens' collectives
https://agorakit.org/
Other
403 stars 88 forks source link

Search #35

Closed philippejadin closed 6 years ago

philippejadin commented 8 years ago

Avec ceci ? : https://medium.com/@tntstudiohr/solving-the-search-problem-with-laravel-and-tntsearch-dfa16aa9173b#.yerntosdb

Avec autocomplétion, suggestions, et séparer les résultats en personnes, actions, discussions, groupes

philippejadin commented 8 years ago

je m'en occupe sauf si @danielsum a une meilleure solution (mais je voudrais une qui ne demande pas un moteur de recherche externe pour ne pas rendre l'hosting plus compliqué...). La solution postée "tntsearch" semble utiliser une db sqlite, mais j'ai pas testé)

danielsum commented 8 years ago

le moteur de recherche devrait être interne je pense. C'est vrai qu'on pourrait utiliser de l'elastic search comme algolia mais je pense que c'est pas nécessaire...

Autre option, de la recherche via javascript (plus rapide !!)

philippejadin commented 8 years ago

je pense que l'option tntsearch propose ce qu'il faut côté serveur pour faire de la recherche javascript (dans le sens recherche progressive au fur et à mesure que tu tapes)

La démo est sacrément cool en tout cas : http://tntsearch.tntstudio.us/

philippejadin commented 8 years ago

et les docs ici : http://www.tntstudio.us/blog/solving-the-search-problem-with-laravel-and-tntsearch

danielsum commented 8 years ago

Coucou Philippe,

Voilà j'ai intégré le TntSearch, c'est pas mal mais vraiment pas nécessaire pour moi... Je ferai vraiment un search custom moi c'est pas beaucoup plus lent...

On en discute la prochaine fois

Tchuuuz !

philippejadin commented 8 years ago

Si tu as le temps de regarder à a ça:-) Je verrais bien une boite de recherche dans la navbar qui recherche dans les personnes, groupes, discussions et actions. On pourrait afficher les différents types l'un en desous de l'autre

Votre recherche "Bonjour" Personnes :

Actions :

etc ...

Apperamment TNT search fait du ranking. Je pense que mysql propose aussi un full text search, ça peut aussi le faire

danielsum commented 8 years ago

Coucou Philippe,

en soi TNT search fait juste un search where xxx, c'est un poil plus rapide car ça passe par un format mysqlite mais en soit tu pourrais faire les recherches directement dans la DB.

Pour la partie javascript, il existe des tas de plugin pour faire une recherche : https://select2.github.io/examples.html => le principe est simple, le champs input envoi une requête à un controller qui retourne un JSON formatté.

Perso, je pense qu'un moteur de recherche doit être custom car par example pour ton cas, je sais pas trop comment faire une recherche croisé avec TNT (mais bon c'est pas bien compliqué non plus)...

Tu as eu le temps de regarder :

https://github.com/philippejadin/Mobilizator/blob/master/app/Console/Commands/IndexSearch.php

Et : https://github.com/philippejadin/Mobilizator/blob/master/app/Http/Controllers/SearchController.php

?

Tchuuz

philippejadin commented 8 years ago

Voilà, dans le dernier commit il y a un début de moteur de recherche comme tu préconises :-)

Enfin je fais juste un like %xyz%

Il semble possible de faire un truc mieux avec match against en mysql, je vais voir ça

Ici les résultats sont affichés dans une page de résultat sans js, à voir...

Avis bienvenus :-)

philippejadin commented 8 years ago

Ou alors ceci ? https://github.com/jarektkaczyk/eloquence/wiki/Builder-searchable-and-more

philippejadin commented 8 years ago

ici : https://github.com/ssddanbrown/BookStack/blob/master/database/migrations/2015_08_31_175240_add_search_indexes.php

full text search à utiliser

mrflos commented 8 years ago

Bonjour, pour info laravel 5.3 possède un module pour la recherche plein texte: https://laravel.com/docs/5.3/scout

J'en profite pour me présenter, Florian, développeur de YesWiki, j'ai aidé @gatienbataille a installer http://participer.wapshub.be/

danielsum commented 8 years ago

Coucou @philippejadin @mrflos ,

Je fais actuellement des tests sur ça (avec Algolia) sur mon propre projet, le truc c'est qu'il faut un compte Algolia pour Scout... Je check pour un driver indépendant ou faire un driver indépendant basé sur MySql ou Redis ?

Ça va être compliqué de dire aux gens d'installer Algolia + Redis, c'est ça le petit problème :/. Est-ce vraiment nécessaire d'avoir un moteur de recherche super hypra rapide ?

Je pense que les filtres (en tout cas pour les fichiers), pourrait-être coté navigateur pour gagner en gain de performance. On ne travaille pas avec des DB de + de 10000 records non plus.

mrflos commented 8 years ago

Hello ya des drivers comme https://github.com/teamtnt/laravel-scout-tntsearch-driver https://github.com/teamtnt/laravel-scout-tntsearch-driver mais je comprends bien que c’est peut être disproportionné pour l’usage de mobilizator.. Et c’est en effet prudent de rester sur une seule config pour la base de données, je pensais qu’Algolia était plus clé en main (s’il faut installer redis, c’est trop)

Le 29 août 2016 à 12:33, Daniel Sum notifications@github.com a écrit :

Coucou @philippejadin https://github.com/philippejadin @mrflos https://github.com/mrflos ,

Je fais actuellement des tests sur ça (avec Algolia) sur mon propre projet, le truc c'est qu'il faut un compte Algolia pour Scout... Je check pour un driver indépendant ou faire un driver indépendant basé sur MySql ou Redis ?

Ça va être compliqué de dire aux gens d'installer Algolia + Redis, c'est ça le petit problème :/. Est-ce vraiment nécessaire d'avoir un moteur de recherche super hypra rapide ?

Je pense que les filtres (en tout cas pour les fichiers), pourrait-être coté navigateur pour gagner en gain de performance. On ne travaille pas avec des DB de + de 10000 records non plus.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/philippejadin/Mobilizator/issues/35#issuecomment-243078473, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHnrfegzp3lZn4FEBSXfUZvj-csyx-kks5qkqeDgaJpZM4IQqfn.

philippejadin commented 8 years ago

Hello à tous les deux, c'est cool d'avoir des retours ! Bienvenue @mrflos

La recherche pour l'instant c'est juste un like %mot% donc si un jour il y a un driver pour scout qui utilise mysql, ce serait à mon avis le plus propre et plus efficace (la recherche actuelle ne marche pas si on met plusieurs mots. Cela permettrait d'utiliser un autre driver pour ceux qui ont cette possibilité, avec fallback sur mysql.

Pour les fichiers, j'ai ajouté la possibilité de les tagguer, il manque la partie client ou on peut filtrer par tag (un tag serait +- comparable à un dossier).

Reste à proposer des tags pour les discussions et peut être les participants et les actions.

philippejadin commented 8 years ago

Donc pour résumer, d'après moi le plus important ce serait d'avoir un système de recherche :

Et éventuellement avoir la possibilité d'upgrader vers un système plus costaud pour ceux qui veulent.

gatienbataille commented 8 years ago

Hello à tous les 3... moi suis bcq moins dév que vous donc une partie me passe un peu au dessus de la tête mais ça m'intéresse...

En tout cas avec les tags un peu partout ça pourrait (peut-être) aussi permettre de créer une sorte de "gestionnaire de tâches" (qui rejoindrait l'issue #3)