3 回答

TA貢獻1803條經(jīng)驗 獲得超6個贊
這可能會增加與所需頭部的相關(guān)性。它不會使它加倍,但它可能對您而言足夠好:
SELECT pages.*,
MATCH (head, body) AGAINST ('some words') AS relevance,
MATCH (head) AGAINST ('some words') AS title_relevance
FROM pages
WHERE MATCH (head, body) AGAINST ('some words')
ORDER BY title_relevance DESC, relevance DESC
-- alternatively:
ORDER BY title_relevance + relevance DESC
如果您具有切換數(shù)據(jù)庫引擎的靈活性,那么您還想研究的另一種方法是Postgres。它允許設(shè)置運營商的權(quán)重并進行排名。

TA貢獻1887條經(jīng)驗 獲得超5個贊
我從未這樣做過,但似乎
MATCH (head, head, body) AGAINST ('some words' IN BOOLEAN MODE)
應(yīng)該給頭部找到的火柴加倍的重量。
在文檔中應(yīng)注意,“布爾模式”幾乎總是返回相關(guān)性1.0。為了獲得有意義的關(guān)聯(lián)性,您需要:
SELECT MATCH('Content') AGAINST ('keyword1 keyword2') as Relevance?
FROM table?
WHERE MATCH ('Content') AGAINST('+keyword1+keyword2' IN BOOLEAN MODE)?
HAVING Relevance > 0.2?
ORDER BY Relevance DESC?
請注意,您正在執(zhí)行常規(guī)的相關(guān)性查詢,以獲取相關(guān)性因子以及結(jié)合使用BOOLEAN MODE的WHERE子句。BOOLEAN MODE為您提供滿足BOOLEAN搜索要求的子集,相關(guān)性查詢滿足相關(guān)性因子,并且HAVING子句(在這種情況下)確保文檔與搜索相關(guān)(即得分小于0.2的文檔)被認為無關(guān)緊要)。這也允許您按相關(guān)性排序。

TA貢獻1806條經(jīng)驗 獲得超5個贊
我也只是在玩這個。添加額外權(quán)重的一種方法是在代碼的ORDER BY區(qū)域中。
例如,如果要匹配3個不同的列,并希望對某些列進行更重的加權(quán):
SELECT search.*,
MATCH (name) AGAINST ('black' IN BOOLEAN MODE) AS name_match,
MATCH (keywords) AGAINST ('black' IN BOOLEAN MODE) AS keyword_match,
MATCH (description) AGAINST ('black' IN BOOLEAN MODE) AS description_match
FROM search
WHERE MATCH (name, keywords, description) AGAINST ('black' IN BOOLEAN MODE)
ORDER BY (name_match * 3 + keyword_match * 2 + description_match) DESC LIMIT 0,100;
添加回答
舉報