我有一個MySQL數據庫,我從另一臺服務器複製。該數據庫包含與此列在文件類型限制的MySQL數據庫表中搜索文件名?
ID,文件名和文件大小
在表中有超過4'000'000記錄的表。我想快速搜索FileName(varchar)列
我發現我可以使用這個Sphinx搜索引擎。問題是我想通過filetype限制搜索。我必須和如何(trigers?)爲所有行提取文件擴展名?可能是我必須創建另一個表(因爲這個表被複制),並以1:1的關係加入它們?
你能給我一些建議,請:)
我有一個MySQL數據庫,我從另一臺服務器複製。該數據庫包含與此列在文件類型限制的MySQL數據庫表中搜索文件名?
ID,文件名和文件大小
在表中有超過4'000'000記錄的表。我想快速搜索FileName(varchar)列
我發現我可以使用這個Sphinx搜索引擎。問題是我想通過filetype限制搜索。我必須和如何(trigers?)爲所有行提取文件擴展名?可能是我必須創建另一個表(因爲這個表被複制),並以1:1的關係加入它們?
你能給我一些建議,請:)
爲什麼不使用同一個正則表達式的SQL查詢?
讓它像...
.$query.\.$extension
這將通配符搜索詞匹配到的文件名,然後過一段,然後擴展名。
你肯定會想將文件類型分成單獨的列 - 這將允許您直接對項的獅身人面像搜索(與匹配模式設置爲擴展):
normal query terms @filetype jpg
然而,這不完全匹配 - 它仍然會使用獅身人面像圍繞單詞匹配等的情報。這可能是你想要的,但如果你不這樣做,我推薦規範化你的數據庫,並把文件類型放在另一個表中,並在你的文件表中有一個外鍵。然後,你可以使用這個整數作爲你的Sphinx設置中的一個屬性,並使用特定文件類型的id對它進行過濾。在獅身人面像中這將會更快,更可靠,但它的工作量會更多。
我認爲這種搜索沒有很好的優化(從我所知道的索引)另一個原因是,可能我會需要做一些文件名轉換,例如devide「MyPicture.jpg」到 列「我的圖片「(帶空格)和列」jpg「(文件類型) – 2009-12-05 20:30:16