当前位置: 首页 > news >正文

做团购网站需要多少钱开发一个网站要多久

做团购网站需要多少钱,开发一个网站要多久,深圳做h5网站设计,中企动力登陆平台索引配置#xff08;一#xff09;加载配置文件以及服务端配置 对于一个搜索引擎来说#xff0c;索引配置是非常重要#xff0c;并且也是非常核心的内容。在 XS 中#xff0c;我们的索引配置是通过一个配置文件来实现的。在前两篇文章的测试中#xff0c;我们使用了一个叫… 索引配置一加载配置文件以及服务端配置 对于一个搜索引擎来说索引配置是非常重要并且也是非常核心的内容。在 XS 中我们的索引配置是通过一个配置文件来实现的。在前两篇文章的测试中我们使用了一个叫做 demo 的索引配置。当时我们直接就是写了一个 demo 这个名称那么这个配置文件具体在哪里呢 默认 DEMO 默认的 demo 索引的配置文件是 sdkpath/app/demo.ini 由于我们是使用 Composer 安装的 SDK 因此它的路径就是在 vendor/hightman/xunsearch/app/demo.ini 。从 1.4.9 版本开始大家可以自定义一个 XS_APP_ROOT 常量或者设置这个环境变量来指定默认项目配置目录。 如果我们不指定路径只是给一个名称的话XS 程序会自动到 SDK 的 app 目录下找对应名称的 .ini 文件。就像我们通过 PHP 代码实例化 XS 对象时构造参数中也只写了一个 demo 一样。 $xs  new XS(demo); 现在我们就打开这个配置文件看看里面有什么东西。 ; vendor/hightman/xunsearch/app/demo.ini project.name demo project.default_charset utf-8 server.index 8383 server.search 8384[pid] type id[subject] type title[message] type body[chrono] type numeric 咱们一个一个来说。 分号; 表示注释project.name 表示项目或索引名称这个在同一个 XS 应用实例中不能重复也就是当前运行的这个 XS 服务里面叫 demo 的索引配置只能有一个一般是和配置文件名称同名。project.default_charset 表示字符集这个直接 utf-8 就好了。server.index 表示索引服务端配置没有 ip 地址的表示当前本机端口号是必须的。server.search 表示搜索服务端配置没有 ip 地址的表示当前本机端口号是必须的。[pid] 表示一个字段 Field 就相当于是数据库中的字段名称。每个字段配置到下一个字段配置中间的部分为针对这个字段的相关配置。type 表示字段的类型具体的类型有哪些我们后面再说。 这下明白为什么在第二篇文章中我建立的 ES 索引为啥是这几个字段了吧就是照搬的 XS 这个默认索引配置啦 Server 配置 从这个配置的配置文件中可以看出XS 的索引服务和搜索服务是分开的所以它会占用两个端口。如果你是使用虚拟机搭建的那么就需要给 server 相关的配置带上 IP 地址比如 server.index 192.168.56.101:8383 server.search 192.168.56.101:8384 注意自 1.4.7 起服务端地址可以使用 ; 分隔指定多个。 索引更新将同步到所有服务端而搜索则随机从中挑选一个可用的服务端以达到均横效果。看出来是啥意思了没直接通过配置文件就可以实现负载均衡了而且是多主同步。 server.index  8383;192.168.56.101:8383 server.search  8384;192.168.56.101:8384 这个配置就表示本机和 192.168.56.101 这台主机的 XS 实例都会同步建立索引并且在搜索时会自动均衡查找。光说不练假把式咱们就来试试。按照上面的配置修改 demo.ini 文件之后。直接测试搜索。 ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Quest.php --show-query demo 项目 -------------------- 解析后的 QUERY 语句Query(项目1) -------------------- 在 3 条数据中大约有 2 条包含 项目 第 1-2 条用时0.0182 秒。1. 关于 xunsearch 的 DEMO 项目测试 #1# [100%,0.44] 项目测试是一个很有意思的行为  Chrono:1314336158  2. 项目测试第三篇 #3# [99%,0.44] 俗话说无三不成礼所以就有了第三篇  Chrono:1314336168  ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Quest.php --show-query demo 项目 -------------------- 解析后的 QUERY 语句Query(项目1) -------------------- 在 0 条数据中大约有 0 条包含 项目 第 0-0 条用时0.0569 秒。 第一次有数据是走得本机的 XS 第二次没有数据正是走了 192.168.56.101 这台虚拟机上的 XS 实例之前我们并没有对这台机器上的 demo 添加数据因此是查不到东西的。接下来我们再插入一条数据。 ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Indexer.php --sourcecsv  demo        初始化数据源 ... csv  WARNING: input file not specified, read data from STDIN 开始批量导入数据 (请直接输入数据) ... 4,项目测试第四篇,两台同步写入试试,123123 INFO: reach end of file or error occured, total lines: 1 完成索引导入成功 1 条失败 0 条 刷新索引提交 ... 接着继续进行查询测试。 ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Quest.php --show-query demo 项目 -------------------- 解析后的 QUERY 语句Query(项目1) -------------------- 在 4 条数据中大约有 3 条包含 项目 第 1-3 条用时0.0127 秒。1. 项目测试第四篇 #4# [100%,0.33] 两台同步写入试试  Chrono:123123  2. 关于 xunsearch 的 DEMO 项目测试 #1# [98%,0.32] 项目测试是一个很有意思的行为  Chrono:1314336158  3. 项目测试第三篇 #3# [98%,0.32] 俗话说无三不成礼所以就有了第三篇  Chrono:1314336168  ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Quest.php --show-query demo 项目 -------------------- 解析后的 QUERY 语句Query(项目1) -------------------- 在 1 条数据中大约有 1 条包含 项目 第 1-1 条用时0.0017 秒。1. 项目测试第四篇 #4# [100%,0.26] 两台同步写入试试  Chrono:123123 大家多试几次会发现它的负载均衡并不是轮询的。有兴趣的小伙伴可以看一下 vendor/hightman/xunsearch/lib/XS.class.php 中 getSearch() 方法的源码它选取服务器连接的方式是随机的随机返回一个服务端连接实例。也就是说XS 在配置文件中实现的负载均衡并不是完全的均衡流量分配也没有其它的配置只有一个随机。 另外如果其中一台机器挂掉了也会将请求转发给其它服务器实例比如我们关掉 192.168.56.101 这台主机。如果随机到这台主机那么请求会卡顿一下然后再次以本机连接返回成功查找到的数据。注意XS 没有类似 Redis 的哨兵之类的机制所以它应该是代码内部去实现的当一个连接不可用之后就切换另一个连接中间会有连接尝试和超时的时间。虽然不是那么强大但是至少一套多副本高可用集群还是能够通过简单地配置文件来实现的。 在 PHP 代码中通过 XSSearch 对象的一个方法就可以获得当前查询使用的是哪个服务端连接。 ?phprequire_once vendor/autoload.php;$xs  new XS(demo); print_r($xs-search-getConnString()); 这里 XS 对象的 search 属性直接就是一个 XSSearch 对象。第一篇文章时就已经说过最终的查询方法 search() 方法其实是 XSSearch 对应的方法。关于这些对象的内容我们在后面会进行详细的学习。 默认值 如果我们不配置 server.index 或 server.search 那么他们默认就会找本机的 8383 和 8384 端口这个我们下面和其它内容一起再进行测试。 自定义配置文件 从开始到现在我们一直看的操作的都是 XS 默认提供的那个索引配置文件也就是 demo.ini 接下来咱们自己来定义一个自定义的。不过内容还是以 demo.ini 的为主。但是位置要换一下比如说放到当前运行目录的 config 目录下。 ; ./config/demo2.ini project.name demo2 project.default_charset utf-8[pid] type id[subject] type title[message] type body[chrono] type numeric[author] type string index both 新建好这个 demo2.ini 文件并且新增加了一个字段 author 表示作者信息。另外在这个配置文件中我们没有指定server.index 或 server.search 这样它就会默认找本机的 8383 和 8384 端口。新增加的字段下面的参数先不用管这些参数下篇文章再说。这回主要就是看看如何使用及加载我们自定义的索引文件。同样还是使用 XS 自带的工具文件进行测试其实只要将原来的 demo 换成绝对或相对路径的完整文件名就可以了。 ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Indexer.php --sourcecsv --clean ./config/demo2.ini  清空现有索引数据 ... 初始化数据源 ... csv  WARNING: input file not specified, read data from STDIN 开始批量导入数据 (请直接输入数据) ... 1,关于 xunsearch 的 DEMO 项目测试,项目测试是一个很有意思的行为,1314336158 2,测试第二篇,这里是第二篇文章的内容,1314336160,zyblog 3,项目测试第三篇,俗话说无三不成礼所以就有了第三篇,1314336168,虎力大仙 INFO: reach end of file or error occured, total lines: 3 完成索引导入成功 3 条失败 0 条 刷新索引提交 ... 数据还是和原来一样。但是这里稍微有一点点改变那就是第一条数据我们没有给 author 赋值。可以看到不给参数赋值也是可以插入成功的。然后还是进行搜索。 ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Quest.php --show-query ./config/demo2.ini 项目 -------------------- 解析后的 QUERY 语句Query(项目1) -------------------- 在 3 条数据中大约有 2 条包含 项目 第 1-2 条用时0.0150 秒。1. 关于 xunsearch 的 DEMO 项目测试 #1# [100%,0.44] 项目测试是一个很有意思的行为  Chrono:1314336158  Author:  2. 项目测试第三篇 #3# [99%,0.44] 俗话说无三不成礼所以就有了第三篇  Chrono:1314336168  Author:虎力大仙 正常显示但第一条数据中的 author 字段信息是空的。另外在你的 XS 服务端的数据目录里会多出一个 demo2 的目录。如果是按我们第一篇文章中安装方式的话虚拟机安装的会在 /usr/local/xunsearch/data 这个目录。 Docker 的话则会在 /Users/zhangyue/XunSearch/data:/usr/local/xunsearch/data 挂载出来的 /Users/zhangyue/XunSearch/data 这个目录下看到相应的内容。 自定义的索引配置文件如果不是放在 SDK 目录下的 app 文件夹中就需要写完整的路径和文件名的而如果你直接在 SDK 下的 app 中目录放置自己新增的配置文件在加载的时候就可以不用指定路径以及那个 .ini 的后缀名就和我们前面一直测试的 demo 一样。 多写少写字段以及字段类型不匹配测试 上面我们已经试过了少写了 author 字段的效果下面我们再试试多写一些字段的效果。 ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Indexer.php --sourcecsv ./config/demo2.ini 初始化数据源 ... csv  WARNING: input file not specified, read data from STDIN 开始批量导入数据 (请直接输入数据) ... 4,项目第四篇测试,多了个字段咋样,123123,zyblog,a,b,c                     INFO: reach end of file or error occured, total lines: 1 完成索引导入成功 1 条失败 0 条 刷新索引提交 ...➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Quest.php --show-query ./config/demo2.ini 项目 -------------------- 解析后的 QUERY 语句Query(项目1) -------------------- 在 4 条数据中大约有 3 条包含 项目 第 1-3 条用时0.0145 秒。1. 关于 xunsearch 的 DEMO 项目测试 #1# [100%,0.33] 项目测试是一个很有意思的行为  Chrono:1314336158  Author:  2. 项目第四篇测试 #4# [99%,0.32] 多了个字段咋样  Chrono:123123  Author:zyblog  3. 项目测试第三篇 #3# [99%,0.32] 俗话说无三不成礼所以就有了第三篇  Chrono:1314336168  Author:虎力大仙 第四条测试数据后面我们多跟了一堆内容很明显这些内容不会进入到索引数据中。chrono 字段是一个 numeric 从字面意思看这是一个数字类型如果我们给它字符串会怎么样呢 ➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Indexer.php --sourcecsv ./config/demo2.ini    初始化数据源 ... csv  WARNING: input file not specified, read data from STDIN 开始批量导入数据 (请直接输入数据) ... 5,项目第五篇,字段类型不匹配,aabbcc,zyblog INFO: reach end of file or error occured, total lines: 1 完成索引导入成功 1 条失败 0 条 刷新索引提交 ...➜  source git:(master) ✗ php vendor/hightman/xunsearch/util/Quest.php --show-query ./config/demo2.ini zyblog -------------------- 解析后的 QUERY 语句Query(Zzyblog1) -------------------- 在 5 条数据中大约有 3 条包含 zyblog 第 1-3 条用时0.0139 秒。1. 项目第五篇 #5# [100%,0.33] 字段类型不匹配  Chrono:0  Author:zyblog  2. 测试第二篇 #2# [97%,0.32] 这里是第二篇文章的内容  Chrono:1314336160  Author:zyblog  3. 项目第四篇测试 #4# [92%,0.30] 多了个字段咋样  Chrono:123123  Author:zyblog 看来 XS 在插入数据的时候会对数据进行类型转换字符串类型最终会变成 0 。 通过这些测试大家可以发现XS 对索引的兼容性还是比较好的。假如我们的系统中有多个索引配置在操作的时候出现问题了本来是要插入到 demo.ini 的数据被插入到了 demo2.ini 中即使字段不对应也是可以插入成功的。有小伙伴会说了这样的话如果数据插入错误了咱们也不知道呀。先提前说一嘴type 类型为 id 的字段是 XS 中必须的主键字段。如果你的系统中有多个索引配置而且容易混乱的话可以尝试将 id 类型的字段起不同的名字哦。这样的话数据就插入不进去了直接会报错。 PHP代码 使用 PHP 代码来指定索引文件也是一样的直接就是 XS 对象在实例化时给定相对或绝对路径的完整索引文件名。 $xs  new XS(./config/demo2.ini); $doc  $xs-search-search(项目);print_r($doc); 直接字符串定义配置文件 除了手动创建一个 .ini 文件之外在 XS 中还可以直接通过动态地字符串来创建索引。也就是说我们可以将索引配置保存到数据库中或者动态地配置索引内容。比如向下面这样。 $indexName  demo3; $indexConfig   EOF project.name  $indexName project.default_charset  utf-8[pid] type  id[subject] type  title[message] type  body[chrono] type  numeric[author] type  string index  bothEOF; 这个索引配置是写在 PHP 代码中的在这里就是动态地定义了一个索引名称。其它的内容都和 demo2.ini 是一样的。然后我们就通过 PHP 代码来插入数据。 $xs  new XS($indexConfig);  // 使用上面的变量里定义的索引配置 if($argv[1]){  // 命令行运行时有参数的时候才插入数据// 清空索引$xs-index-clean();$data  [[pid1,subject三号DEMO的关于 xunsearch 的 DEMO 项目测试,message项目测试是一个很有意思的行为,chrono1,authorzyblog,],[pid2,subject三号DEMO的测试第二篇,message这里是第二篇文章的内容,chrono1314336160,authorzyblog,],[pid3,subject三号DEMO的项目测试第三篇,message俗话说无三不成礼所以就有了第三篇,chrono123,author虎力大仙,]];// 循环插入数据foreach($data as $d){$doc  new XSDocument;$doc-setFields($d);$xs-index-add($doc);} }// 查询输出数据 $doc  $xs-search-search(); print_r($doc); 注释已经写得很清楚了同时我们也第一次看到了怎么在 PHP 代码进行数据的插入。现在可以直接运行这段代码。 ➜  source git:(master) ✗ php 4.php 1 Array ( ) 参数随便写个 1 什么的就行主要上的就是 $argv[1] 的判断条件能通过就行了这样我们的代码就会走到插入数据中。最后打印出来的结果是空的数组大家不要急接下来我们去掉参数并且稍等一会。 ➜  source git:(master) ✗ php 4.php   Array ([0]  XSDocument Object(………………………… 是不是有数据啦从这里可以看出XS 之所以要分出 8383 和 8384 两个端口分别用于索引和查询操作就是因为它的索引操作是异步的。通过之前的学习大家应该也了解到了搜索引擎需要对文档进行分词、保存等操作而且还有一些其它的分析操作。这些操作都是比较耗时的因此会通过异步的方式进行索引的插入、修改、删除操作在索引插入后并不能马上展示出数据。因此XS 是一个 近实时搜索引擎 包括 ES 也是这种搜索引擎它的索引建立和数据插入会比 XS 快一些。近实时其实就是 接近 实时的意思它们都会存在分词、解析的过程即使是像 MySQL 如果你的表中索引非常多那么插入效率也一样会降低嘛。 幸好对于日常中小型应用来说这一块是可以不要求那么高的同步性的而且它的速度也没有慢到忍受不了的程度。 在这个地方还需要注意  search() 这个方法我们给的查询条件是一个空字符串其实不用给参数也可以查出数据的但是其中有个字段显示的结果会是有问题的大家可以自己试试。我不知道原因如果有了解的小伙伴可以评论留言哈。 总结 一开始正式的学内容就有点多呀。其实还好啦篇幅长主要还是贴的代码多其实今天的主要内容就是标题上那两个一个是关于索引配置文件的加载自定义配置文件的加载以及服务端的配置问题。在服务端的配置中我们一上来就看到了如何通过索引配置文件来连接多台主机这样就可以很方便地实现读写分离以及保证高可用。虽说它的功能没有 Redis 的哨兵那样简单方便故障自动切换但是咱们手动一下也不是啥大事啦或者自己写心跳检测然后自动修改索引配置文件也是可以的啦。毕竟 Redis 不管是开发团队还是社区资源以及活跃度比 XS 可是高了不止一个数量级的。 好了下篇文章我们将学习的就是索引配置中另一部分的重要内容也就是每个字段下面的那些属性配置就四个字非常重要 测试代码 https://github.com/zhangyue0503/dev-blog/blob/master/xunsearch/source/4.php 参考文档 http://www.xunsearch.com/doc/php/guide/ini.guide
http://www.yutouwan.com/news/36687/

相关文章:

  • 活动策划公司网站高端美食网站建设
  • 网站建设调研问卷wordpress图片数据库
  • 建设企业网站e路护航官网下载wordpress图片乱码
  • 网址跳转网站襄阳百度开户
  • 网站制作公司 首推万维科技网站平均停留时间
  • 六安公司做网站试描述一下网站建设的基本流程图
  • 农产品网络营销模式福州百度快速优化
  • 陕西网站推广公司分销渠道管理
  • 成品源码网站asp.net新建网站
  • 跨境外贸网抖音seo优化怎么做
  • 如何做网站页面赚钱网站关键词 查询
  • 什么语言建手机网站培训网站
  • 网站产品整合推广网站制作产品资料
  • 网站制作与美育融合酒店机票搜索量暴涨
  • 做网站外包公司名称大全wordpress数据统计
  • 提高网站收录软件开发流程八个步骤模板
  • 微商怎么做网站阿里云官方网站
  • 做网站吉林上海建筑设计院招聘
  • 南宁本地网站有哪些阿里云搭建公司网站
  • 网站违规关键词长沙房地产价格
  • 电线电缆技术支持中山网站建设wordpress新用户提醒
  • 番禺网站建设wwiw网站开发培训
  • 平面设计可以自学吗优化方案范文
  • 大型网站开发教程wordpress 标签 中文
  • 佛山做外贸网站服务自己做的网站显示不安全怎么回事
  • 室内设计网站案例wordpress 模拟数据库
  • 站酷网入口龙口市最新公告
  • 怎么注册网站名称深圳ui设计师工资
  • 云阳一平米网站建设网络营销是干嘛的
  • 免费优化网站的软件企业网站分析