2011-11-24 94 views
1

我正在開發一個在Php和MySQL中的內聯網論壇我正在使用ajax在同一頁面上顯示搜索結果但現在我正在使用查詢LIKE文本%進行搜索在數據庫中速度較慢。但我想讓它快速搜索工程,它可以解析*,+並顯示結果。論壇搜索引擎在php中搜索數據庫中的關鍵字

由於我使用AJAX我不能夠使用免費的搜索ENGIN,所以如果可能的話請提供一個完整的解決方案

+0

我不知道這個問題的嚴重程度是什麼 - 你會遇到速度與像文本%?你到底在問什麼? – Rob

+0

使用LIKE%bla%將給出所有出現的bla – Graham

回答

1

搜索引擎,如Solr,Lucene或Sphinx(如前所述)。

但是,如果您只需要在幾張表中搜索,則可以使用mysql全文搜索功能。他們只使用MyIsan引擎工作,但每次使用存儲過程或每次更新父表時更新它們都很容易。因此,您不需要安裝全功率服務器來使用全文搜索。

Fulltext Search on dev.mysql.com

1

你可以使用Sphinx Search,這是一個開源的,具有非常強大的本地搜索引擎許多編程語言的API以及與MySQL的良好集成。

這是some tutorial using Sphinx Search with PHP

+0

我使用ajax來顯示結果,所以我只需要一個解決方案,以使其搜索更快,並解析特殊字符如*,+等並顯示結果。 –

+0

獅身人面像速度非常快,所以將它與Ajax一起使用應該不成問題。獅身人面像支持星級搜索,但「+」是什麼? – arnep

+0

如果你想用像fooltball +羅納爾多這樣的兩個關鍵詞搜索類似於谷歌。 :) –

0

看一看了Zend Lucene的 - >從網站http://framework.zend.com/manual/en/zend.search.lucene.html

提取物:

Zend_Search_Lucene是一個完全由PHP 5編寫 通用文本搜索引擎因爲它存儲在其索引文件系統和 不需要數據庫服務器,它可以將搜索功能添加到幾乎任何PHP驅動的網站中的 。 Zend_Search_Lucene支持 以下特點:

  • 排名功能的搜索 - 最好的結果顯示第一

  • 許多強大的查詢類型:短語查詢,布爾查詢,通配符 查詢,近似查詢,範圍查詢等等。

  • 搜索特定的字段如果你需要在你的很多數據庫的表中進行搜索,而這些都是很大的,你應該使用文本(例如,標題,作者,內容)