我有一个PHP字符串数组:即:“大绿色车停在外面”..等等
我想对这些字符串执行布尔搜索操作,类似于MySQL全文搜索或Sphinx搜索。
例如,我想查找包含单词“green”但不包含“car”的所有字符串
有谁知道任何现有的PHP类或库可以帮助我实现这一目标?或者任何人都可以建议我可以搜索的任何谷歌条款?
提前谢谢!
答案 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)
我不知道任何可以直接使用变量的现有独立解决方案。您可以使用PCRE,str_word_count和其他字符串/数组函数来编写自己的实现。资源在那里。灵感也可能来自某些开源应用程序所采用的方法,例如Dokuwiki's full-text search functions。
更强大的解决方案(包括索引流程)可能是Zend_Search_Lucene:
Zend_Search_Lucene是一般的 目的文本搜索引擎编写 完全在PHP 5.因为它存储它 文件系统上的索引,但没有 需要一个数据库服务器,它可以添加 几乎任何搜索功能 PHP驱动的网站。在Zend_Search_Lucene 支持以下功能:
- 排名搜索 - 首先返回最佳结果
- 许多强大的查询类型:短语查询,布尔查询, 通配符查询,邻近查询, 范围查询和许多其他查询。
- 按特定字段搜索(例如,标题,作者,内容)