PetitCalgonMais bon, au niveau de la query SQL, tu as juste un title = "%search%" or message = "%search%"
, ça fait pas une grosse différence, si ?
C'est pas trop éloigné, mais pas si simple que ça, vu que pour l'instant, je parse la chaîne recherchée afin de supporter des opérateurs booléens et la recherche par guillemets.
La question est plutôt : comment organiser/présenter les résultats ?
Si la recherche porte sur les messages, on pourrait être tenté d'afficher uniquement les messages "matchant" la requête, et de produire un lien direct vers ce message. Mais le contexte du message est important (ie. son topic). Dans ce cas, il convient d'afficher aussi le titre du topic. Ok, mais si j'ai 15 messages dans un même topic, et que 10 d'entre eux satisfont la recherche, est-ce que ce topic ne devrait pas être affiché comme "plus pertinent" ? Je me demande s'il ne serait pas plus judicieux de considérer le topic comme l'unité de recherche, dont le contenu est défini par les messages. Mais dans ce cas, la page de résultats contiendra juste les topics (et les morceaux de messages). Il faut que je trouve une astuce pour permettre de remonter au bon message directement depuis l'affichage du résultat.
Un peu comme si, sur Google, si tu cherches "PetitCalgon", ça t'affiche www.lexpage.net avec, en dessous, les endroits du site où on parle de PetitCalgon versus une liste exacte des pages où on trouve PetitCalgon, peu importe que ça soit sur le même site ou que l'ordre des sites ne dépend pas de la pertinence du résultat.
En général, on peut utiliser une technique de faceting pour régler ce souci : on fait la recherche par message, on liste les topics et les extraits concernés par la recherche, et quand tu cliques sur le topic, ça affiche uniquement les messages de ce topic qui sont pertinents. Dans ce cas, on peut alors immédiatement aller au bon message sur le bon topic.
Je trouve cette recherche plus intéressante : on peut rechercher à la fois un topic et des messages, et la pertinence d'un topic est fonction de la pertinence des messages qu'il contient. Si je cherche "Lexpage and GitHub", je m'attends à voir le topic "Lexpage enfin sur GitHub" ressortir non pas parce que le titre contient ces deux mots, mais plutôt parce que le contenu du topic (au sens large) fait souvent mention de ces deux éléments. Le "hic" : c'est que je n'ai aucun moyen, lorsque j'affiche les résultats, de savoir si la personne souhaite trouver le topic, ou si la personne souhaite trouver un message spécifique (par exemple, celui qui annonce que Lexpage est enfin sur GitHub). Dans le premier cas, mon unité de base est le "topic", et le "document" dans lequel je fais la recherche est l'ensemble du thread. Dans le deuxième cas, l'unité de base est le "message" qui est également le document dans lequel je fais la recherche. Dans le premier cas, je peux fournir un lien direct vers le topic (mais pas vers le message, ou tout du moins, si j'utilise une solution "presque prête" comme Haystack), alors que dans le second cas, je peux fournir un lien vers le message ET vers le topic (mais je ne peux pas définir une "pertinence" pour le topic).
Pour résumer, savoir comment vous utilisez la recherche m'aiderait à trancher pour l'une ou l'autre approche. Si l'objectif est de trouver le topic contenant le message recherché (et donc la recherche porte en réalité sur le contenu du topic et non spécifiquement d'un message), alors j'opterai pour l'approche (1). Si l'objectif est de trouver spécifiquement un message (parce que vous voulez spécifiquement réagir ou relire celui-là, indépendamment de son topic), alors il faut que j'opte pour l'option (2).