簡體   English   中英

多詞搜索查詢

[英]Multiple term search query

我有一個搜尋器,可以掃描網頁中的所有單詞。 然后,它將每個單詞及其所屬的URL插入到mysql數據庫中。然后,根據文檔中找到的單詞數量對搜索進行排名。 問題是...如何將多個術語查詢添加到現有查詢中。

它非常適合單項查詢,但是我希望我的查詢嘗試在同一網頁中一起查找單詞,並且如果網頁中都沒有單詞出現,則可以正常返回這些單詞的結果。

我的查詢如下:

         $results = addslashes( $_POST['results'] );

               " SELECT p.page_url AS url,
                       COUNT(*) AS occurrences 
                       FROM page p, word w, occurrence o
                       WHERE p.page_id = o.page_id AND
                       w.word_id = o.word_id AND
                       w.word_word = \"$keyword\"
                       GROUP BY p.page_id
                       ORDER BY occurrences DESC
                       LIMIT $results"

使用COUNT(DISTINCT ...)來計算在每個頁面上找到的不同單詞的數量,並使用IN查找任何單詞列表:

SELECT
    p.page_url AS url,
    COUNT(DISTINCT w.word_word) AS words_found
    COUNT(*) AS occurrences 
FROM page p
JOIN occurrence o ON p.page_id = o.page_id
JOIN word w ON w.word_id = o.word_id
WHERE w.word_word IN ('foo', 'bar')
GROUP BY p.page_id
ORDER BY occurrences DESC

如果要確保頁面上至少有n個搜索字詞,請添加HAVING子句:

GROUP BY p.page_id
HAVING COUNT(DISTINCT w.word_word) >= 2
ORDER BY occurrences DESC

如果數據庫引擎支持,則可以進行子選擇。 例:

SELECT 
  url, 
  (select count(*) from table where conditions1) as count1, 
  (select count(*) from table where conditions2) as count2 
 FROM table

暫無
暫無

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

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