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

sphinx/coreseek 精确搜索记录

为什么80%的码农都做不了架构师?>>>   hot3.png

简单叙述之前配置当中遇到的问题和解决办法并不做详细配置讲解;

第一节 配置

              配置csft.conf可以参考这篇博客简单了解一下,后面咱们再来修改这个配置文件

              http://www.cnblogs.com/yjf512/p/3598332.html

              只记得遇到了几个问题诶,其实不是这么少只是想不起来了

              问题1:执行命令 bin\indexer -c etc\csft.conf 出现错误 Unigram dictionary load Error

              不用怀疑肯定是路径出问题了;

              检测路径是不是有问题可以用命令:cd 路径

              诶,竟然发现路径是对的;

              接下来就会发现你指定的目录下肯定是没有uni.lib文件

              问题2:中文搜索乱码

              echo 网络搜索 | iconv -f gbk -t utf-8 | search -c etc\csft.conf --stdin | iconv -f utf-8 -t gbk

第二节     配置修改

               解决上面提到的搜索问题

               sql_attr_uint    //无符号整型属性

               sql_attr_timestamp   //时间戳属性,经常用来做排序,sql_attr_str2ordinal  这些是干什么用的呢?

                sql_attr_str2ordinal   //字符串排序属性。一般我们按照字符串排序的话,我们会将这个字符串存下来进入到索引中,然后在查询的时候比较索引中得字符大小进行排序。

                但是这个时候索引就会很大,于是我们就想到了一个方法,我们在建立索引的时候,先将字符串值从数据库中取出,暂存,排序。

                然后给排序后的数组分配一个序号,然后在建立索引的时候,就将这个序号存入到索引中去。这样在查询的时候也就能完成字符串排序的操作。

                这,就是这个字段的意义。

                配置文件里添加了:

                        sql_query                = SELECT all_id'id',name,baoming,LENGTH(name) AS namecount ,trim(name) AS newname,trim(baoming) AS newbaoming from rank_all

                        属性添加      sql_attr_uint            = namecount //暂时没有用到,留以后用

                        属性添加      sql_attr_str2ordinal = newbaoming

                php 文件里添加了

                        $sc->SetGroupBy ("newbaoming", SPH_GROUPBY_ATTR,'namecount ASC ');

                        $res = $sc->query($findKey, 'all');  // 在 all 索引中查询 $findKey

                        需要查询的sql:                        

                         $sql = "SELECT rank_all.baoming, rank_all.num,   REPLACE( SUBSTR( rank_all.name, 1, 9 ) ,  '?',  '' ) name ,CASE WHEN lower(rank_all.name)='".strtolower($findKey)."' THEN 1 ELSE 0 END                                           namecount ,                     rank_table.ico_url 

                         FROM rank_all, rank_table 

                         WHERE rank_all.market = rank_table.market 

                         AND rank_all.all_id in($arrs) 

                         AND DATE_FORMAT( date_sub(curdate() , INTERVAL " . C(MAX_INTERVAL) . "  DAY ) , '%Y%m%d') <= rank_all.tag  

                         ORDER BY namecount DESC,rank_all.baoming";

                

            需要注意的地方:

                            如果你修改了配置文件csft.conf的max_matches            = 10000然后发现搜索出来的数据只有1000条,那是因为SetLimits(0,20,1000)第三个参数默认为1000条不受max_matches控制

                            同样如果第三个超过max_matches设置的值,你将搜索不到任何数据

                            
                            我记不住啊,就写这里吧

                            linux定时重建索引:

                            crontab -e 

                            19 4 * * * /bin/sh /usr/local/sphinx/bin/build_main_index.sh

                             删除 crontab

                            crontab -r

            最后一定要开启服务bin\searchd -c etc\csft.conf;cstf.conf编码为无bom格式,千万别用win下记事本打开;


转载于:https://my.oschina.net/deacyn/blog/474324

相关文章:

  • 创建一个最简单的Linux随机启动服务
  • c++随机数
  • 交换机使用之级联和堆叠配置---学习中
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • 集成支付宝SDK时错误的解决办法
  • vim配置
  • 常见负载均衡器禁(启)用成员汇总[原创] - 运维进行时 - 互联网运维技术架构
  • 联想E431笔记本wifi驱动安装
  • LINUX说细启动顺序解述
  • ibatis中使用like模糊查询
  • Scrum三头猪
  • mysql之视图
  • 高效工作的信息搜集及管理术
  • ExtJS4 动态生成grid出口excel(纯粹的接待)
  • 迁移mysql数据到oracle上
  • 分享的文章《人生如棋》
  • 2017-09-12 前端日报
  • CentOS7 安装JDK
  • CentOS7简单部署NFS
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Java 23种设计模式 之单例模式 7种实现方式
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Linux CTF 逆向入门
  • Mocha测试初探
  • Sass Day-01
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Shell编程
  • SQLServer之索引简介
  • storm drpc实例
  • ViewService——一种保证客户端与服务端同步的方法
  • 基于web的全景—— Pannellum小试
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微服务框架lagom
  • ​渐进式Web应用PWA的未来
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (C语言)字符分类函数
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (TOJ2804)Even? Odd?
  • (二)PySpark3:SparkSQL编程
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (转)Mysql的优化设置
  • (转)平衡树
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .Net Web窗口页属性
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .so文件(linux系统)
  • :如何用SQL脚本保存存储过程返回的结果集
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ 数据结构 - C++]红黑树RBTree
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell