我有正在通過以下方式MySQL的PHP匹配多個關鍵字
Table: Images
image_id
image_title
...
Table: Keywords
keyword_id
keyword
Table: Image_Keyword
image_id
keyword_id
採用這種結構構成三個表,我能夠搜索如有圖片使用任何關鍵字匹配聯接和或聲明 - 然而,我希望能夠檢索具有多個關鍵字匹配的圖像,例如「關鍵字=('紅色'或'禮服')和'晚上'」 - 這會在夜晚返回所有圖片中的「紅色」或「連衣裙」。
理想情況下,我想允許用戶能夠在搜索框中指定AND和OR命令,這就是爲什麼我迄今選擇不爲每個新關鍵字單獨加入 - 但是我不確定如何繼續查詢的結構化。
目前,我有以下,沒有「和」執行:
SELECT i.* FROM images i
JOIN image_keyword ik ON i.id = ik.image_id
JOIN keywords k ON k.id = ik.keyword_id
WHERE k.keyword IN ('night','red')
如何去創造任何幫助的「和」此查詢的一部分,將不勝感激!謝謝好心,
丹
// UPDATE
所以它看起來好像我將不得不通過創建做連接的每個「與」要求,我需要理清 - 但是我對現在的要求延長...
我有遵循以下結構
Table ImageData
id
image_id
caption_id
...
Table Caption
id
data (text)
在這種情況下其他兩個表,我要搜索對於關鍵字('red','dress'和'night'),使用與之前相同的'AND'和'OR'功能,但是如果文字數據與標題數據匹配(使用相同的規則)領域。我假設我可能在'關鍵字'搜索後使用OR,然後在標題上使用全文搜索,但是我不知道是否有更簡潔的方式來組合兩者,甚至可能是兩個單獨的查詢,然後選擇不同的結果 - 這可能允許AND在關鍵字中成功的情況,並且OR在標題中成功。
任何想法,將是非常美妙的
再次感謝
嘿 - 是的,謝謝你,我想我可能不得不爲每個創建一個新的聯接,雖然真的希望不必這樣!我會嘗試一下,並讓你知道 - 謝謝你:) – Dan 2011-02-24 17:47:57
我有問題一起使用此附加額外的搜索作爲添加到上面的問題 - 有什麼你可能會建議? – Dan 2011-02-28 12:19:41