2013-10-30 28 views
1

我正在嘗試創建一個簡單的工具,允許用戶通過使用由我定義的同義詞搜索約200個單詞。如何通過使用我定義的同義詞進行搜索來安排查找單詞的數據庫?

例如:該集合中的單詞是「fire」。用戶可以搜索火焰火焰比賽等(我把這些在)... ...,它會返回「火」

最初的想法:我立即想到的是僅僅有一個兩列的表格,其中第一列是實際詞,第二列是一個合適的同義詞:

ACTUAL    SYNONYM 
fire    flame 
fire    flames 
fire    matches 

所以當用戶搜索,我會做一個簡單的選擇:

SELECT actual WHERE synonym = "THE SEARCH TERM" 

問:我應該如何設置我的數據庫搜索這些詞並將它們與同義詞相關聯?我建議的解決方案是最好還是最有效的方法?我覺得我應該能夠每個「實際」有一行,並在第二列中放置所有同義詞,但是我不知道如何搜索第二列,或者如果它更有效只是一個清單。

回答

1

只要你的同義詞每個映射回一個「實際」或核心詞,你有什麼是好的。然後它只是

select ACTUAL from Your_Table where SYNONYM = "The_Search_Term" 

然後你會得到零或一個記錄。

我可能會使用一個like條款,而不是如果你的同義詞是夠不一樣的,所以你不必亂用複數:

select ACTUAL from Your_Table where SYNONYM like "%The_Search_Term%" 

這樣,你不需要同時包括flameflames; flame將適用於兩者。

+0

聽起來不錯。我不認爲每個「實際」有超過20個同義詞,所以桌子不會變得非常巨大。我因爲遺漏了FROM並且沒有使用過LIKE而感到很蠢。自從我完成SQL之後,這太久了,哈哈。感謝您的幫助! – Jon

+0

我的榮幸。你沒有指定SQL,所以我不會說這是一個疏忽。我明白你的意思了。 'LIKE'可以減小表格的大小,但是你會增加多次結果的機會。如果你的一個同義詞是'cat',另一個是'scatter',那麼你將通過'LIKE'查詢返回多行。 – John

+1

嗯,好點。多個結果並不是什麼大不了的,但我會亂搞的。享受你的夜晚! – Jon

相關問題