我正在嘗試在三個獨立的表中進行全文搜索並按照相關性對結果進行排序。在我搜索答案的過程中,我發現我無法在多個表中使用全文搜索。所以我爲我想搜索的每一列添加了一個單獨的全文索引。現在的問題是,我可以做搜索,但我不能按照自己的意願進行排序。多個表上的mysql全文搜索
這裏是我的表
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)
);
我的SQL查詢。這是我卡住的地方。
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
現在通過本查詢,我可以按標題,作者或內容進行排序。我想要做的是,將所有三列的相關性集中在一起,然後通過它來排列結果。
而且,是的,我知道像lucene或獅身人面像其他搜索引擎,但我現在不打算使用它們。
在此先感謝。
。謝謝。 – keune 2010-11-19 18:39:05
幫助我加載。謝謝! – youngcouple10 2012-02-28 21:23:35
非常好,我需要我的項目! – NaturalBornCamper 2012-09-24 01:55:23