0

这是我第一次愿意添加多个搜索。我不确定应该怎么做。我应该在搜索中使用循环每个单词吗?还是那里有任何内置的mysql功能?

我在想它应该是这样的吗?

 $strSearch = $this->input->post("search"); // would hold words etc hello word

 $arry = explode(" ", $strSearch);

 foreach($arry as $item){

 $this->db->query("select * from tbl where item like '%$item%');

}

请指教。

谢谢你

4

3 回答 3

1

有很多东西要搜索。

重复你的话只是战斗的一小部分。有词序(Mac Office vs. Office Mac),忽略常用词(a,the),词变体如复数。不要忘记权衡和评分您的搜索。

尝试使用 Zend Search Lucene 等已经完成繁重工作的库。请参阅:http ://codeigniter.com/forums/viewthread/207865/或http://www.cmjackson.net/2009/02/17/how-to-use-zend_search_lucene-with-the-php-framework-codeigniter /

于 2012-07-20T02:26:18.087 回答
0

它是如何工作的

我拆分单词并循环遍历每个单词以制作一个额外的字符串,然后通过 mysql 查询执行该字符串。它按我想要的方式工作。

$strSearch = $this->input->post("search"); // would hold words etc hello word

 $arry = explode(" ", $strSearch);

 foreach($arry as $item){


$xQuery .= " or name like '%$item%' or location like '%item'";

}


$this->db->query("select * from tbl where name like '$strSearch' or location like '$strSearch'  .$xQuery ");
于 2012-07-20T22:08:02.757 回答
0

您可能会查看 MySQL 自然语言搜索。

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

于 2012-07-20T22:23:03.847 回答