2011-11-24 85 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支持 以下特点:

  • 排名功能的搜索 - 最好的结果显示第一

  • 许多强大的查询类型:短语查询,布尔查询,通配符 查询,近似查询,范围查询等等。

  • 搜索特定的字段如果你需要在你的很多数据库的表中进行搜索,而这些都是很大的,你应该使用文本(例如,标题,作者,内容)