您的位置:

php智能搜索,php数据库搜索

本文目录一览:

PHP与MYSQL实现搜索功能

算了。估计这次回答没分。

跟你聊聊所谓的智能搜索吧。

不用 like 实现你说的智能一些的搜索。首先你得做一套分词系统。就是把你那一句话分成若干个词。

比如“你是个非常牛逼的二傻子”这句话。你不能把“你是个”当成一个词吧。 智能一点的分词应该是把“你、非常、牛逼、傻子”分出来。

然后就开始涉及到一个权重问题了。就是 你分出来的这些词 到底你希望哪些符合条件的结果排在签名。很明显上面那句话 傻子的权重要高一些。其次是牛逼。。。

然后 根据权重结果匹配呈现出结果来。。。

基本上 搜索引擎都是这么干的。 分词---数据查询----权重排序----结果呈现。。。。

php怎么生成sitemap.xml

/**

 * 生成站点地图

 */

class sitemap{

    private $sitemapFile = array();

    private $oldxml      = null;

    private $newxml      = null;

    public $error        = null;

    public function __construct($sitemapFile) {

        $this-sitemapFile = $sitemapFile;

        if(is_file($this-sitemapFile)) {

            $data = file_get_contents($this-sitemapFile);

            if($data) {

                $this-oldxml = new SimpleXMLElement($data);

            }else{

                $this-error = '读取站点地图文件失败';

            }

        }else{

            $this-oldxml = $this-createEmptySitemap();

        }

        $this-newxml = $this-createEmptySitemap();

    }

    public function createEmptySitemap() {

        $str = '?xml version="1.0" encoding="UTF-8"?';

        $str .= 'urlset xmlns="" xmlns:xsi="" xsi:schemaLocation="        " /urlset';

        return new SimpleXMLElement($str);

    }

    public function addChilds($urlArr) {

        $urlArr = (array) $urlArr;

        foreach($urlArr as $url) {

            $priority = 0.5;

            $lastmod = date('Y-m-d');

            $changefreq = 'weekly';

            if(stripos($url,'.html')) {

                $priority = 1;

                $changefreq = 'monthly';

            }

            if($oldXmlUrl = $this-findOldXmlUrl($url)) {

                $priority = $oldXmlUrl-priority;

                $lastmod = $oldXmlUrl-lastmod;

                $changefreq = $oldXmlUrl-changefreq;

            }

            $rating = $this-newxml-addChild('url');

            $rating-addChild('loc',$url);

            $rating-addChild('priority',$priority);

            $rating-addChild('lastmod',$lastmod);

            $rating-addChild('changefreq',$changefreq);

        }

    }

    public function findOldXmlUrl($url) {

        $oldXmlUrl = '';

        foreach($this-oldxml-url as $key=$xmlUrl) {

            if($xmlUrl-loc == $url) {

                $oldXmlUrl = $xmlUrl;

                unset($this-oldxml-url[$key]);

                break;

            }

        }

        return $oldXmlUrl;

    }

    public function save() {

        $data = $this-newxml-asXML();

        if(file_put_contents($this-sitemapFile,$data) === false) {

            $this-error = '写入站点地图数据失败';

            return false;

        }

        return true;

    }

}

上面这个是我个人博客生成站点地图用的类。

客户端调用代码如下:

$sitemapFile = 'Sitemap.xml';

$sitemap = new sitemap($sitemapFile);

if($sitemap-error) {

    die($sitemap-error);

}

$newUrl = [

    ''

];

$sitemap-addChilds();

if(!$sitemap-save()) {

    die($sitemap-error);

}

关键的问题是,你如何得到整站的url呢?

我个人博客的解决方法是写了个蜘蛛程序爬出来的。

php中怎样通过输入课程名称,点击查询,搜索所选课程的所有学生成绩信息,并存放到表格中!

首先,你用的数据库,起码要把你的数据库表贴出来吧,不然我们怎么给你具体的语句呢,智能猜测你的表

猜测数据课程名称字段 classname 然后拿到这个课程的所有学生成绩信息

如果要一条语句出来就是连表了

假设你一个学生信息表 stuInfo,一个课程表 class,一个成绩表 score

那么就是更具课程名字拿到课程id,然后再成绩表中拿到这个课程id的所有信息,然后再根据score表的uid拿到学生名字等信息

我只能写个推测的写法

select stuInfo.name,class.classname,score.score

from score

left join class on score.class_id = class.id

left join stuInfo on score.uid = stuInfo.id

where class.classname = "查询框拿到的课程名字"

如果你不用联表查

那就先课程表查询出class_id 然后成绩表拿到这个class_id 的所有数据 当然要用户信息可能要连个表,我就不写了

php怎么做一个智能搜索呀?

首先你要有个词库,然后将输入的内容拆分,然后再全文检索。技术不难,难就难在如果收集这个词库

PHP 如何搜索一个字符串中是否包邮姓名

你只能搜索确定的字符串,或者正则对象

可以通过preg_match()函数来搜索。

但如果你连正则也不能给出,要像人一样去理解哪些是“姓名”,那只能用人工智能了。