xunsearch实战经验总结
一、定义好配置文件(非常关键)
a):如果需要做精确搜索建议对字段设定index=self,tokenizer = full,不然xunsearch会对字段做分词处理;
b):数字区间搜索需设定 type=numerice;
c):如需对字段进行模糊匹配tokenizer 可不设定,默认做scws分词,如字段存储的值为“,6,7,8,”想搜索包含6或8的数据;
d):配置文件必须包含一个type=id的主键字段
配置文件参考手册:http://www.xunsearch.com/doc/php/guide/ini.guide
生成配置文件:http://www.xunsearch.com/tools/iniconfig
二、搜索 addQueryString()
a):字段搜索
$this->_xs_search->addQueryString('style_sn'.':"'.$condition['style_sn'].'"');
b):IN搜索
foreach ($list as $value){
$query.="{$key}:{$value} OR ";
}
$this->_xs_search->addQueryString(rtrim($query,"OR "));
c):区间搜索
$this->_xs_search->addRange('shoucun',$condition['shoucun_min'],null); //大于最小值
$this->_xs_search->addRange('goods_price',$condition['price_min'],$condition['price_max']);
d):like搜索
不设定tokenizer默认支持模糊搜索
$this->_xs_search->addQueryString('style_sn'.':"'.$condition['style_sn'].'"');
e):排序
排序字段建议采用数字类型(非必须)
$order=array("goods_click"=>1);
if (count($order) > 1) {
$this->_xs_search->setMultiSort($order); //多个排序字段
} else {
$this->_xs_search->setSort($order);
}
d):分组 (setCollapse)
$this->_xs_search->setCollapse($this->_collapse,1)->setLimit($page_size,$begin);
f):返回总数不正确
//解决总条数(getLastCount()/count())统计不准确问题
//原理:重新查询一次并设定Limit,如果超过实际总数将返回正确的记录条数
$this->_xs_search->setCollapse($this->_collapse,1)->search();
$count = $this->_xs_search->setCollapse($this->_collapse,1)->getLastCount();
$total_page = ceil($count/$page_size);
$begin = ($total_page-1)*$page_size;
$this->_xs_search->setCollapse($this->_collapse,1)->setLimit($page_size,$begin);
$this->_xs_search->setCollapse($this->_collapse,1)->search();
$count = $this->_xs_search->setCollapse($this->_collapse,1)->getLastCount();
$this->_indexer_count = $count;
注意:
如果出现10061错误或连接被拒绝,请在安装目录bin文件夹下执行此句命令:./xs-ctl.sh -b inet start
xunsearch实战经验总结的更多相关文章
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)
RAC 特殊问题和实战经验(五) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景
随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们 ...
- MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验
原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师年一线实战经验,我当然不能和我的老师平起平坐,得到老师三分之一的 ...
- MySQL索引实战经验总结
MySQL索引对数据检索的性能至关重要,盲目的增加索引不仅不能带来性能的提升,反而会消耗更多的额外资源,本篇总结了一些MySQL索引实战经验. 索引是用于快速查找记录的一种数据结构.索引就像是数据库中 ...
- 第9期Unity User Group Beijing图文报道:《Unity实战经验分享》
时间来到了金秋九月,北京UUG活动也来到了第九期.本次活动的主题为<Unity实战经验分享>,为此我们邀请了3位资深的行业大神.这次我们仍然在北京市海淀区丹棱街5号微软大厦举行活动,在这里 ...
- ASP.NET Core & Docker 实战经验分享
一.前言 最近一直在研究和实践ASP.NET Core.Docker.持续集成.在ASP.NET Core 和 Dcoker结合下遇到了一些坑,在此记录和分享,希望对大家有一些帮助. 二.中间镜像 我 ...
- Jenkins高级用法 - Jenkinsfile 介绍及实战经验
系列目录 1.Jenkins 安装 2.Jenkins 集群 3.Jenkins 持续集成 - ASP.NET Core 持续集成(Docker&自由风格&Jenkinsfile) 4 ...
- HDFS配置参数及优化之实战经验(Linux hdfs)
HDFS优化之实战经验 Linux系统优化 一.禁止文件系统记录时间 Linux文件系统会记录文件创建.修改和访问操作的时间信息,这在读写操作频繁的应用中将带来不小的性能损失.在挂载文件系统时设置no ...
- Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)
Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码) 转 https://blog.csdn.net/lhl1124281072/article/details/800 ...
随机推荐
- 一个使用命令行编译Android项目的工具类
一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...
- HDU 2717
Catch That Cow Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- ssh 结构
service:业务层 dao:数据訪问层 hibernate:持久层
- 2016.04.25,英语,《Vocabulary Builder》Unit 18
capit, from the Latin word for 'head', caput ['keɪpət] n.头,首 , turns up in some pretty important pla ...
- c24--预编译,宏定义(带参数,不带参数)
// // main.c // 宏定义 #include <stdio.h> void test(); /* 预处理指令:在我们的文件翻译成0和1之前做的操作我们称之为预处理指令,一般以# ...
- Jenkins project
1.project name 这个作为git clone的target folder 2.Multiple SCMs 建立2个git类型的操作,相互独立. additional Behaviors 设 ...
- 什么是URL?网址的组成
欢迎加入前端交流群交流知识&&获取视频资料:749539640 和 Hypertext 以及 HTTP 一样,URL是Web中的一个核心概念.它是浏览器用来检索web上公布的任何资源的 ...
- BZOJ 4032 trie树+各种乱搞
思路 : 先对b 的所有后缀建立trie树 第一问 暴力枚举a串的起点 在trie树上跑 找到最短的 第二问 也是暴力枚举a串的起点 a和b顺着暴力匹配就好 第三问 求出来a在第i个位置 加一个字母j ...
- awk杂集-20170911
awk 格式 1.awk -F '分割符' 'BEGIN{} /执行条件/{} END{}' filepath; 默认使用空格分割 2.awk -v word=$command '{print wor ...
- RAP、Mock.js、Vue.js、Webpack
最近做项目使用的是RAP1的接口,但是昨天开始,RAP1 出现了问题,接口都不能用了. 所以补充一下Mock.js的用法,以便在这种突发的情况时候时自己通过Mock的方式来处理接口. npm init ...