我正試圖從mysql數據庫中檢索條目,其中數據庫中的關鍵字對應於文章的標題或文章的標籤。目前,我正在使用instr,但這並不夠具體,因爲我發現爲更短的關鍵字檢索到太多不相關的結果 - 即。我嘗試檢索標題或標籤列表中包含「藝術」字樣的條目,但最終會檢索其他條目,例如「文章」。MYSQL - 僅檢索標籤搜索中的全部單詞
我有以下表結構。數據庫有一個預定義的標籤列表。每篇文章的類別被賦予了許多的標籤從主標籤列表:
tags_tbl (overall tags list)
tt_tag_id (pk) int
tt_tag varchar
category_tag_assignments_tbl (the category which a tag is assigned to)
cta_id (pk) int
cta_tag_for_id (fk to tags_tbl.tt_tag_id) int
cat_for_id (fk to category table) int
我的查詢是:
SELECT * FROM tags_tbl INNER JOIN category_tag_assignments_tbl ON tags_tbl.tt_tag_id = category_tag_assignments_tbl.cta_tag_for_id WHERE instr('The Article Title' , tags_tbl.tt_tag) > 0 OR instr('these,are,article,tags' , tags_tbl.tt_tag) > 0
我怎樣才能讓這個我都只有不到文章標題搜索,在文章標籤中,對於一個完整的單詞,在沒有檢索到可能出現字符串的較長單詞的同時,還要考慮到標籤列表由不帶空格的逗號分隔的事實?我想盡量減少php處理的數量 - 我無法控制標題和標籤的實際表示,因爲這些由外部源提供,除非我提前使用php修改它們。
我正在考慮合併下面的正則表達式,我在這裏找到了stackoverflow,但我不知道如何應用它在這種情況下,因爲我在我的搜索條件搜索(對不起笨拙的措辭,我知道,但我想不出還有怎麼說吧):
WHERE tags_tbl.tt_tag REGEXP '[[:<:]]art[[:>:]]'
謝謝!
謝謝Gordon Linoff。 concat的工作,因爲我希望它。謝謝。我也將更多地看布爾模式。謝謝! – user2287202