Üç ayrı tabloda tam metin araması yapmaya çalışıyorum ve sonuçları alaka düzeyine göre sıralıyorum. Yanıt için yaptığım aramalarda, birden fazla tabloda tam metin araması kullanamayacağımı öğrendim. Bu yüzden aramak istediğim her sütun için ayrı bir tam metin dizini ekledim. Şimdi sorun şu ki aramayı yapabilirim ama istediğim gibi sıralayamıyorum.Birden çok tablodaki mysql tam metni
İşte benim tablolar
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)
);
Ve sql sorgusu var. Bu benim sıkıştığım yer.
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
Artık bu sorgu ile başlıklar, yazarlar veya içeriklere göre sıralama yapabilirim. Yapmak istediğim, üç sütunun hepsinin alaka düzeyini bir araya getirip sonuçları ona göre sıralamasıdır.
Ve evet, ben lucene veya sfenks gibi diğer arama motorlarının farkındayım, ama şimdi onları kullanmayı planlamıyorum.
Şimdiden teşekkürler.
ikinci sorgusu ile aynı şeyi yapar. Teşekkürler. – keune
Yükler bana yardımcı oldu. Teşekkürler! – youngcouple10
Çok güzel, projem için neye ihtiyacım vardı! – NaturalBornCamper