Keypoints不同工具之间的版本匹配非常重要。由点到面,先实践再学习原理细节与使用技术栈laravel5.5框架+scout组件+elasticsearch6.3.0搜索引擎辅助elasticsearch-head视图集群数据可视化中文分词插件Ik介绍laravel是一个现代的php框架es是一个搜索引擎es-head是一个图形界面工具,用于管理和查看使用esscout是一个优秀的laravel组件安装过程laravelravelinstaller安装:laravelnewlarasearch配置env文件:DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=julyeduDB_USERNAME=rootDB_PASSWORD=123456此时启动phpartisan命令,访问127.0.0.1:8000即可看到项目主页。es在es官网选择合适的版本。建议选择6.3.0,这样IK和ES-head可以一起使用。#下载https://www.elastic.co/downloads/past-releasesIK1。直接插件命令安装./bin/elasticsearch-plugininstallhttps://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip2。配置修改ik版本适配es6.3.1,修改文件plugin-descriptor.properties,config文件夹下的配置文件主要是IK本身暂时不需要修改,这个properties文件主要是交互用es修改其es版本和jdk版本号#修改elasticsearch-head/plugin-descriptor.properties文件description=head-Awebfrontendforanelasticsearchclusterversion=6.3.1site=truename=analysis-ikclassname=org.elasticsearch.plugin.analysis.ik.AnalysisIkPluginjava.version=1.8elasticsearch.version=6.3.1es-headhead是基于node开发的,所以需要安装nodenode下载地址:http://cdn.npm。taobao.org/dis...在电脑任意目录下(不在elasticsearch目录下),执行命令,gitclonehttps://github.com/mobz/elasticsearch-head.gitcdelasticsearch-head/npminstall为了让es-head访问es,需要配置跨域:修改两个地方:#elasticsearch-headGruntfile.jsconnect:{server:{options:{port:9100,hostname:'*',base:'.',keepalive:true}}}#elasticsearch-5.6.0configelasticsearch.ymlhttp.cors.enabled:truehttp.cors.allow-origin:"*"Scout通过composer安装依赖包composerrequirelaravel/scoutcomposerrequiretamayo/laravel-scout-elastic基本配置在config/app.php文件中的providers数组中添加一个服务提供者//config/app.php'providers'=>[//...Laravel\Scout\ScoutServiceProvider::class,//...ScoutEngines\Elasticsearch\ElasticsearchProvider::class,]使用以下命令生成scout配置文件phpartisanvendor:publish--provider="Laravel\Scout\ScoutServiceProvider"php配置'elasticsearch'=>['index'=>env('ELASTICSEARCH_INDEX','laravel'),'hosts'=>[env('ELASTICSEARCH_HOST','http://localhost:9200'),],],然后我们打开.env文件,添加scout和elasticsearch的配置#scoutconfigurationSCOUT_DRIVER=elasticsearchSCOUT_PREFIX=#elasticsearchconfigurationELASTICSEARCH_INDEX=esdemo#elasticsearch地址ELASTICSEARCH_HOST=http://172.30.6.1:9200相关文档地址laravelscout中文文档地址:https://laravel-china.org/doc...es中文文档地址:https://www.elastic.co/guide/...es6.3.0地址:https://www.elastic。co/downlo...IKgithub地址:https://github.com/medcl/elas...启动并查看startes./bin/elasticsearch地址http://127.0.0.1:9200/startes-headnpmrun启动地址http://127.0.0.1:9100启动laravel项目phpartisan服务地址http://127.0.0.1:8000/es/s?page=1测试执行创建索引创建模型并填充数据创建模型app/Ques。php,为了后续测试方便,请先建表填充数据,可以手动使用sql语句添加数据,也可以使用laravel自动迁移填充数据save()的方法就不用定义了//3,方便的方法是定义$fillable=[];#定义隐藏字段受保护$hidden=[];/***索引名称**@returnstring*/publicfunctionsearchableAs(){return'ques_index';}/***索引名称**@returnstring*/publicfunctionsearchableAs(){return'Quess_index';}/***可搜索数据索引**@returnarray*/publicfunctiontoSearchableArray(){$array=$this->toArray();//自定义数组...return$array;}}将所有现有记录导入搜索索引phpartisanscout:import"App\Ques"importprocessImported[App\Ques]modelsuptoID:500Imported[App\Ques]modelsuptoID:1000Imported[App\Ques]modelsuptoID:1500Imported[App\Ques]modelsuptoID:2000All[App\Ques]记录已导入。我们在访问es的时候,是不是已经有了刚才导入的Quess_index索引数据呢?http://172.30.6.1:9200/esdemo/Ques_index/_search尝试搜索在route/web.php写个demo试试看;Route::get('/search/{content}',function($content){//直接输出数组数据,限制1000//$res=App\Ques::search($content)->take(1000)->get()->toArray();//分页请求http://127.0.0.1:8000/es/machinelearning?page=1$res=App\Ques::search($content)->paginate(100)->toArray();dd($res);});大功告成输出:array:12[▼"current_page"=>1"data"=>array:9[▼0=>array:9[▼"id"=>922"ques"=>"哪个机器学习算法不需要做归一化吗?”"analysis"=>"""概率模型不需要归一化,因为它们不关心变量的取值,而是关心变量的分布和变量之间的条件概率,比如决策树,rf和优化adaboost,svm,lr,KNN,KMeans等问题需要归一化。\r\n我理解归一化和标准化主要是为了方便计算,比如两个变量的维度不一样,可能是一个的值比另一个大很多,所以当它们同时作为变量时,可能会引起数值计算问题。例如,矩阵的逆可能非常不准确或者梯度下降法收敛困难,并且如果需要计算欧几里得距离,可能维度也需要调整,所以我猜lr和knn应该很好确定。至于其他的计算?一般习惯说树models,和这里说的概率模型可能有类似的意思。引用自@寒小阳""""type_id"=>3"diff"=>0"isdelete"=>1"created_time"=>"2017-12-1018:57:13""update_time"=>"0000-00-0000:00:00""is_show"=>1]1=>array:9[?]2=>array:9[?]3=>array:9[?]4=>array:9[?]5=>array:9[?]6=>array:9[?]7=>array:9[?]8=>array:9[?]]"first_page_url"=>"http://127.0.0.1:8000/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0?query=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0&page=1""from"=>1"last_page"=>1"last_page_url"=>"http://127.0.0.1:8000/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0?query=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0&page=1""next_page_url"=>空“路径”=>“http://127.0.0.1:8000/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0”“每页”=>100"prev_page_url"=>null"to"=>9"total"=>9]参考PHP使用elasticsearch搜索安装和分词方法[https://segmentfault.com/a/11...]Laravel中使用Scout集成Elasticsearch搜索引擎[https://segmentfault.com/a/11...]全文搜索引擎Elasticsearch入门教程[http://www.阮一风。com/blo...]laravel使用ElasticSearch搜索[https://blog.csdn.net/lingche...]elasticsearch6.3.1+IK插件安装部署攻略[https://blog.csdn.net/超级他...]
