簡體   English   中英

如何在MySQL中使用多個關鍵字對搜索結果進行分組

[英]How to group search results with multiple keywords in MySQL

我有一個數據庫,其關鍵字鏈接到某個帖子::

Table word_index: word_id - keyword
Table word_rel: word_id - postId - unique_id


Example word_index:
1 - keyword1
2 - keyword2
3 - keyword3 
...

Example word_rel:
1 - 1 - 1
2 - 1 - 2
3 - 2 - 3
...

現在,用戶可以搜索一個或多個關鍵字(就像谷歌一樣)。

我使用SQL查詢,這很好用。 但是,當他們使用多個關鍵字時,我希望結果更嚴格,只顯示兩個關鍵字匹配的結果。 現在,查詢將返回所有其中一個關鍵字匹配的帖子。

SELECT g.postName
FROM
(SELECT gr.postId FROM word_index wi INNER JOIN word_rel gr ON wi.word_id = 
gr.word_id (keyword1,keyword2) ) prr
INNER JOIN posts g ON g.postId = prr.postId
GROUP BY g.postId DESC

因此, FROM (SELECT ...)部分中的Select選擇所有匹配的項目。 之后,它應該只顯示兩個關鍵字的所有匹配,而不是兩個中的一個。

我可以在最后一個GROUP BY部分執行此操作,還是必須更改所有內容?

您可以使用GROUP BYHAVING執行此操作:

SELECT gr.postId
FROM word_index wi INNER JOIN
     word_rel gr
     ON wi.word_id = gr.word_id
WHERE wi.keyword IN (keyword1, keyword2)
GROUP BY gr.postId
HAVING COUNT(*) = 2;

您需要從提供的搜索字符串構造IN列表。 然后,您需要根據要匹配的關鍵字數量在HAVING指定比較值。

注意:您可能需要進行一些預處理,以確保不會輸入兩次關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM