有人可以請我指出正確的方向,我目前有一個可搜索的數據庫,並遇到搜索問題的標題。數據庫搜索減去「前綴」
如果標題以「The」開頭,那麼很顯然標題將在'T'部分,避免「The」搜索的好方法是什麼?我應該連接兩個字段來顯示標題,但僅通過忽略前綴的第二個標題進行搜索。還是有另一種方法來做到這一點?建議或指導將會很好。謝謝。
有人可以請我指出正確的方向,我目前有一個可搜索的數據庫,並遇到搜索問題的標題。數據庫搜索減去「前綴」
如果標題以「The」開頭,那麼很顯然標題將在'T'部分,避免「The」搜索的好方法是什麼?我應該連接兩個字段來顯示標題,但僅通過忽略前綴的第二個標題進行搜索。還是有另一種方法來做到這一點?建議或指導將會很好。謝謝。
幾個選擇:
一)在「庫」格式,這意味着您處理標題並將其存儲爲
Scarlet Pimpernel, The
Tale of Two Cities, A
B)存儲用於顯示目的原來不變標題存儲標題,並添加一個新的「library_title」字段來存儲a)中的處理版本。
c)添加一個新字段來存儲文章,並在標題字段中顯示標題。爲了顯示,你需要連接兩個字段,搜索時只需在標題字段中查看。
在數據庫中創建三列
1)TitlePrefix 2)標題 3)TitlePostfix
代碼,這樣你有4種方法,如
searchTitleOnly(testToSearch) // search only title column
searchTitleWithPrefixAndPostfix(testToSearch)//concat all the three columns and search
searchTitlePrefix(testToSearch) // search title prefix only
searchTitlePostfix(testToSearch) // search title postfix only
如果你正在使用MySQL,您可以使用str_replace函數從查詢中刪除「The」,或者如果您使用PHP或Ruby或其他語言,則可以在發送到數據庫服務器之前清理查詢。
有沒有必要'''在停用詞列表中,並已被排除。 – Johan
我相信最好的方法是使用全文搜索,並在停用詞列表中加入'the'。這將解決搜索問題(即搜索短語中的'''將被忽略)。
但是,如果您按標題訂購結果,則在「T」部分中按照'The'開頭的標題仍然會被排序。爲了解決這個問題,有幾種可能的方法。下面是其中一些:
在其他...
請使用任何代碼示例?我在這方面嚴重不合格,因此奮鬥,謝謝 – Renai
在閱讀您對原始問題的最後評論之後,現在我相信您不需要全文搜索,只需要一種方法來訂購結果。我會選擇下面@Marc B指出的其中一個選項。 – bfavaretto
感謝bfavaretto,對我來說看起來很容易理解 – Renai
嘗試尋找到像LTRIM,RTRIM等一些SQL函數,並在具有完全相同的DAT一個臨時列中使用這些功能一個。通過使用LTRIM,RTRIM通過放棄任何您希望的單詞來修改數據。然後在修改後的列上執行搜索並返回整行作爲結果!
你正在使用什麼樣的搜索?標準的LIKE或全文搜索? – robjmills
所以,如果你有一個像「馴服sh」「這樣的標題,你會希望它在搜索中出現使用術語」the「,但你不希望」閃亮「出現? – gordatron
好的這裏有一個例子,感謝大家的快速回復; 分頁結果AZ,你點擊T,想要所有的東西都以T開頭,所以,「The Shining」會出現在S下面,因爲如果人們在開始時忘記或不知道有一個「The」,他們會沒有找到他們正在尋找的東西,除非他們進行搜索。這是分頁結果,A-Z。 – Renai