全文搜索字符串数组

时间:2010-06-05 10:45:46

标签: php full-text-search

我有一个PHP字符串数组:即:“大绿色车停在外面”..等等

我想对这些字符串执行布尔搜索操作,类似于MySQL全文搜索或Sphinx搜索。

例如,我想查找包含单词“green”但不包含“car”的所有字符串

有谁知道任何现有的PHP类或库可以帮助我实现这一目标?或者任何人都可以建议我可以搜索的任何谷歌条款?

提前谢谢!

3 个答案:

答案 0 :(得分:1)

preg_match()函数可能对你有帮助吗?

答案 1 :(得分:1)

PHP函数array_filter()将在这里发挥作用。

function greennotcar($v)
{
    if(strpos($v, " green ") === false)
        return false
    if(strpos($v, " car ") !== false)
        return false
    return true
}

$newarray = array_filter($array, "greennotcar");

检查字符串是否包含green,如果不包含,则将其从数组中排除。然后,它会检查它是否包含car,如果包含{{1}},则将其排除。否则,请加入它。

编辑:我在字符串中添加了空格,因此您不会匹配购物车和汽车,例如。这完全取决于您自己的偏好。

答案 2 :(得分:1)

我不知道任何可以直接使用变量的现有独立解决方案。您可以使用PCREstr_word_count和其他字符串/数组函数来编写自己的实现。资源在那里。灵感也可能来自某些开源应用程序所采用的方法,例如Dokuwiki's full-text search functions

更强大的解决方案(包括索引流程)可能是Zend_Search_Lucene

  

Zend_Search_Lucene是一般的   目的文本搜索引擎编写   完全在PHP 5.因为它存储它   文件系统上的索引,但没有   需要一个数据库服务器,它可以添加   几乎任何搜索功能   PHP驱动的网站。在Zend_Search_Lucene   支持以下功能:

     
      
  • 排名搜索 - 首先返回最佳结果
  •   
  • 许多强大的查询类型:短语查询,布尔查询,   通配符查询,邻近查询,   范围查询和许多其他查询。
  •   
  • 按特定字段搜索(例如,标题,作者,内容)
  •