模糊搜索智能分词php,智取百度、谷歌分词技术实现智能模糊搜索

众所周知,wordpress的搜索相当糟糕,它是硬性(完全)匹配,为了实现博客智能模糊搜索功能,为了尽可能达到百度等各大搜索引擎的搜索效果,就要分词准确与分词扩展。用户输入一段话,如何将这句话根据词组切割成一段一段,通过这一段一段再去数据库匹配内容就是搜索技术的核心所在。

所谓智取就是爬虫技术,通过服务端发请求到第三方网站(跨域只在浏览器上独有的特性,在服务端发请求就不受任何限制了),我这里以百度为例子,通过nodejs爬取内容,然后提取搜索出来的前十条里面的加红关键词。代码样例:

var http = require("http");

var express = require('express');

var app = express();

app.get('/search', index);

function index(req, res, next) {

let keyword = req.query.keywords;

if(keyword){

var search_url = 'http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=';

http.get(search_url+encodeURI(keyword),function(_res){

let _data = '';

_res.on('data',(chunk) => _data += chunk.toString());

_res.on('end', () => {

let content = fn.getNode("#content_left",_data);//限定获取范围,减轻计算压力fn.getNode是封装的一个字符串里面取节点的函数,具体看http://www.mizuiren.com/477.html

let baiduKeywords = content.match(/([^/g);//在容器内匹配红色字关键词,其实就是*

let fanalKeywords = [];

if(baiduKeywords){

baiduKeywords.forEach(function(item){

let text = item.split("")[1].split("")[0];

fanalKeywords.indexOf(text) > -1 || fanalKeywords.push(text);//把关键词都放到fanalKeywords数组里,可用这个数组去数据库查数据了,这里省略

});

res.end(''+fanalKeywords.join(",")+'');//为了演示,直接把关键词输送到前端页面上

}else{

return next();

}

});

});

}else{

return next();

}

}

前端请求:/search?keywords=汶川大地震

分词结果:汶川大地震,汶川,地震,汶川地震,汶川县,大地震

前端请求:/search?keywords=我爱深圳

分词结果:我爱深圳,我爱深圳我爱深圳,深圳,我爱,深圳市,深圳市爱

前端请求:/search?keywords=秋叶网络博客

分词结果:秋叶网络博客,博客,秋叶,网络,秋叶博客

前端请求:/search?keywords=生活 志趣 爱

分词结果:志趣,生活,爱上,爱,爱生活爱

前端请求:/search?keywords=技术是对生活最完美的诠释

分词结果:对生活最好的诠释,对生活的诠释,完美诠释,生活,是对,生活最完美的诠释,技术,是最好的诠释,生活好,对生活,最完美的诠释,完美,是对生活最好的诠释,为,完美的,最好的生活,生活的,生活的最完美的诠释,对于,完美生活的诠释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值