J'essaie de faire une recherche de texte intégral dans trois tableaux séparés et de trier les résultats par pertinence. Au cours de mes recherches, j'ai découvert que je ne pouvais pas utiliser la recherche fulltext dans plusieurs tables. J'ai donc ajouté un index de texte intégral séparé pour chaque colonne que je veux rechercher. Maintenant le problème est que je peux faire la recherche mais je ne peux pas faire le tri comme je voudrais.mysql fulltext sur plusieurs tables
Voilà mes tables
CREATE TABLE books (
bookID int(11) NOT NULL AUTO_INCREMENT,
title varchar(300) NOT NULL,
authorID int(11) NOT NULL,
FULLTEXT KEY title (title)
)
CREATE TABLE IF NOT EXISTS authors (
authorID int(11) NOT NULL AUTO_INCREMENT,
authorNamevarchar(200) NOT NULL,
FULLTEXT KEY authorName(authorName)
);
CREATE TABLE IF NOT EXISTS chapters (
chapterID int(11) NOT NULL AUTO_INCREMENT,
bookID int(11) NOT NULL,
content longtext NOT NULL,
FULLTEXT KEY content (content)
);
et ma requête SQL. C'est là que je suis coincé.
SELECT *,
MATCH(books.title) AGAINST('$q') as tscore,
MATCH(authors.authorName) AGAINST('$q') as ascore
MATCH(chapters.content) AGAINST('$q') as cscore
FROM books
LEFT JOIN authors ON books.authorID = authors.authorID
LEFT JOIN chapters ON books.bookID = chapters.bookID
WHERE
MATCH(books.title) AGAINST('$q')
OR MATCH(authors.authorName) AGAINST('$q')
OR MATCH(chapters.content) AGAINST('$q')
ORDER BY ???? DESC
Maintenant, avec cette requête, je peux faire le tri par les titres, les auteurs ou les contenus. Ce que je veux faire est, obtenir la pertinence pour les trois colonnes ensemble et ordonner les résultats par cela. Et, oui, je suis au courant d'autres moteurs de recherche comme lucene ou sphinx, mais je ne prévois pas de les utiliser maintenant.
Merci d'avance.
exactement. Merci. – keune
m'a aidé charges. Merci! – youngcouple10
Très bien, ce dont j'avais besoin pour mon projet! – NaturalBornCamper