2009-11-24 97 views
0

我一直在尋找PHP,SQL根據搜索條件從DB中檢索數據的開放腳本。現在,每個腳本我偶然發現了也不會在此順利:我在哪裏可以找到優秀的數據庫搜索引擎腳本?

說我要找的「奧巴馬 同性戀權利的政策」好嗎?但在DB 有「同性戀的奧巴馬政策和 他們的權利 - 誠實的文章」。儘管這是一個相關的結果, 定期搜索與通配符不會 檢索任何東西。

你知道如何解決這個問題嗎?我不願意自己寫一個,加上它是一個容易出錯的方法。顯然有很多網站使用這種機制,我只是沒有找到那樣的幸運。

謝謝!

+1

你使用哪種數據庫? Mysql,sqlite,ms sql,Oracle ...? – tuinstoel 2009-11-24 18:45:32

+0

MySQL,根據我的理解,這通常是與PHP一起使用的RDBMS。 – Gal 2009-11-25 13:10:27

回答

1

你似乎在尋找一個全速文本搜索引擎的種類。

DBMS在存儲和檢索部署信息方面做得非常出色。當你發現他們更有限的,當它涉及到的關鍵詞的基礎上進行搜索,部分的標題

一些的DBMS,提供一些內置或多或少集成全文檢索引擎,這通常是一個不錯的選擇,因爲它允許使用SQL功能和謂詞或FT功能處理數據(或其中的一部分)。

MySQL確實支持全文搜索功能(感謝Yacoby的信息!!!)。例如參見MySQL 5.4 documentation on Full-Text Search functions
請注意,此功能據說很慢(請參閱此答案後的評論)。

如果你不想看看MySQL的FT搜索功能,有很多商業和免費的,其中許多是開源的全文引擎。

我曾經使用過,並建議

  • 的Lucene/Solr的
  • dtSearch
  • MSSEARCH

但你應該尋找到一個更完整的列表,在此Wikipedia article關於這一主題。

+1

MySQL確實提供全文搜索。 – Yacoby 2009-11-24 18:47:16

+0

@Yacoby,謝謝,你剛剛教了我一些東西。儘管我使用mySQL,但我從來不需要使用with的FT搜索。但很高興知道這是「在那裏」! – mjv 2009-11-24 18:59:54

+0

@Yacobi:MySQL全文搜索僅適用於MyISAM http://dev.mysql.com/doc/refman/5.1/en/fulltext-restrictions.html,速度比獅身人面像慢! – 2009-11-24 21:17:47

2

你會想要使用數據庫full text search功能。實施應該能夠通過匹配搜索條件的結果來返回結果。
大多數數據庫都具有此功能,但至少使用MySQL時,它不會索引長度小於4個字符的字詞(默認情況下),這是共享主機上的問題,因爲他們可能不願改變它。

如果你想要更高的性能解決方案還是有不支持全文檢索數據庫,有各種語言的專用搜索引擎,如Lucene

相關問題