[英]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.