2009-07-07 20 views
4

我正在嘗試向我的網站進行搜索功能:
不幸的是,我不知道該如何操作?如何實現數據庫中的搜索?

是一個足夠的搜索功能?例如:

SELECT * FROM Employees WHERE (Title Like 'Title%') 

還是有更專業的方法嗎? (例如,正則表達式)

回答

0

你可能想尋找到一個全文搜索引擎,如Lucene

Lucene是一個獨立的軟件編程,它可以索引你要求它索引的任何東西(例如數據庫中的一些對象)。執行搜索時,首先使用Lucene API搜索全文索引並檢索一組對象ID。然後,您執行簡單的數據庫檢索以獲取具有這些ID的對象。

1

如果您要求如何在您的網站上實現搜索功能(如每個/某些頁面頂部的搜索框),則取決於您網站的實施情況。

  1. 如果您使用數據庫存儲來存儲所有網站內容,那麼您可以使用數據庫搜索。但在內容/標題/等搜索。或使用全文搜索。
  2. 如果您使用任何CMS /門戶解決方案,它可能已經支持搜索功能。
  3. 如果您使用靜態內容,則必須通過文件搜索進行設置。
6

有,如果你想實現一個系統上爲關係數據執行即席搜索,你可以使用幾種方法:

  1. 使用一個開源的搜索引擎,如Lucene
  2. 使用數據庫的文本索引功能 - 如果有的話 - 這取決於您使用的是哪個數據庫。信息爲:Oracle/SQL Server/MySQL/PostgreSQL
  3. 使用自己編寫的搜索系統的inverted index - 雖然這是一個毫無意義的一點,如果你能使用選項1或2
+0

有趣的是,我從來沒有真正想過如何全文索引實際工作。 – RichardOD 2009-07-07 11:00:48

1

關係數據庫,你幾乎留下了子字符串搜索(LIKE),它可能不夠靈活,並且只能在短列(如標題)下工作(高效)。

因此,您可能需要使用全文搜索引擎(如Lucene)。 在這種情況下,數據庫外部會有一個全文搜索索引,用於搜索關鍵字。

某些關係數據庫對其文本列具有可選的全文搜索功能。 使用這些,您可以使用SQL發出全文查詢(甚至可以將其與針對其他列的查詢結合使用)。 在甲骨文看起來像

SELECT id FROM table WHERE CONTAINS(text_column, 'java AND text', 1) > 0; 
相關問題