3 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
這可能會(huì)增加與所需頭部的相關(guān)性。它不會(huì)使它加倍,但它可能對(duì)您而言足夠好:
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ù)庫(kù)引擎的靈活性,那么您還想研究的另一種方法是Postgres。它允許設(shè)置運(yùn)營(yíng)商的權(quán)重并進(jìn)行排名。

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
我從未這樣做過,但似乎
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?
請(qǐng)注意,您正在執(zhí)行常規(guī)的相關(guān)性查詢,以獲取相關(guān)性因子以及結(jié)合使用BOOLEAN MODE的WHERE子句。BOOLEAN MODE為您提供滿足BOOLEAN搜索要求的子集,相關(guān)性查詢滿足相關(guān)性因子,并且HAVING子句(在這種情況下)確保文檔與搜索相關(guān)(即得分小于0.2的文檔)被認(rèn)為無(wú)關(guān)緊要)。這也允許您按相關(guān)性排序。

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
我也只是在玩這個(gè)。添加額外權(quán)重的一種方法是在代碼的ORDER BY區(qū)域中。
例如,如果要匹配3個(gè)不同的列,并希望對(duì)某些列進(jìn)行更重的加權(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;
添加回答
舉報(bào)