本文目錄一覽:
- 1、PHP與MYSQL實現搜索功能
- 2、php怎麼生成sitemap.xml
- 3、php中怎樣通過輸入課程名稱,點擊查詢,搜索所選課程的所有學生成績信息,並存放到表格中!
- 4、php怎麼做一個智能搜索呀?
- 5、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()函數來搜索。
但如果你連正則也不能給出,要像人一樣去理解哪些是「姓名」,那隻能用人工智慧了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258599.html