後我以前的問題(http://stackoverflow.com/questions/8217522/best-way-to-search-for-partial-words-in-large-mysql-dataset),我'我選擇了Sphinx作爲MySQL數據庫上方的搜索引擎。獅身人面像搜索,複合鍵
我已經做了一些小測試,它看起來不錯。不過,我現在正處於一個地步,我需要一些幫助/意見。我有一個表的文章(結構並不重要),表屬性(結構並不重要),以及每個文章的每個屬性的值(這是它的全部內容)的表。 其中這些值存儲表,具有以下結構:
articleID UNSIGNED INT
propertyID UNSIGNED INT
value VARCHAR(255)
主鍵是條款ArticleID和屬性ID的化合物鍵。
我希望獅身人面像通過value
列進行搜索。但是,要在Sphinx中創建索引,我需要一個唯一的ID。我沒有在這裏。 同樣在搜索時,我希望能夠在propertyID列上進行過濾(例如,只能通過將propertyID定義爲屬性來實現propertyID 2的搜索值)。
在獅身人面像的論壇,我發現我可以創造一個多值屬性,並將其設置爲查詢我的獅身人面像指數:現在不過
SELECT articleID, value, GROUP_CONCAT(propertyID) FROM t1 GROUP BY articleID
條款ArticleID將是獨一無二的,我現在很想念值。所以我很確定這不是解決方案,對吧?
還有一些其他選項,如:
- 添加一個額外的列的表,這是唯一
- 創建查詢計算的獨特價值(如
articleID*100000+propertyID
)
有沒有其他的選擇我可以使用,你會怎麼做?
Thans爲你解答的結果。如果我創建了一個計算的獨特值,那麼讓這兩個ID回來是可取的。但是這當然不是一個很好的方法...... –
如果你這樣做,你需要一個字段2 *(INT)大小的字段來存儲數據庫中的組合鍵值,否則無論何時重新索引數據庫,都必須重新計算它。想想你計劃每天重新索引DB一次,DB表包含100000條記錄,所以計算成本會更高。而用戶的未來增長將會使其變得更加困難。 –
是的。這不是一個好的選擇。我會再等幾天,看看其他人是否對我的問題有其他意見,然後再將其標記爲答案。 –