关于使用讯搜(xunsearch)过程中遇到的坑

1. 在xunsearch中按区间搜索的方法

`$search->addRange('字段名','from','to')`
- 第一个参数为字段名
- 第二个参数为区间的起点(如果为null,则代表不设置下限)
- 第三个参数为区间的终点(如果为null,则代表不设置上限)

2. 在xunsearch中按字段排序的方法

`$search->setSort('字段名','true')`
- 第一个参数为字段名(需要排序的字段,在配置文件中其类型必须设置为number)
- 第二个参数设置排序方式,true为正序,false为倒序(注意,这里的参数是true/false而不是asc/desc)

3. 在xunsearch中addRange或者setSort等的不起作用的原因及解决方案

  • 原因: setQuery() 相当于清除所有查询条件(这一点,我们可以在$search->search()的前后分别打印查询语句,对比判断)
  • 解决方案:必须把 addRange, setSort 放在 setQuery 之后
    $search->setQuery($q)->setLimit(...)->addRange(...)->setSort();

4. 关于如何解决xunsearch中总条数(getLastCount()/count())统计不准确的解决方案

  • 在xunsearch中,往往会遇到第一页和最后几页统计的总条数不一样的情况(第一页统计的条数比后面的多).遇到这样情况,我们可以变相的通过统计最后一页的总条数来做到条数统一的目的
  • //获取首页总条数
    $search->search();
    $count1 = $search->getLastCount();
    //跳转到最后,再次获取总条数
    $page1 = ceil($count1/$rows);
    $begin = ($page1-1)*$rows;
    $search->setLimit($rows,$begin);
    $search->search();
    $count = $search->getLastCount();
    //回到正常分页
    $search->setLimit($rows,$begin_item);
    $docs = $search->search();

5.只有区间查询时,addRange()无效的解决方案

  • 原因:
    由于不经过 setQuery 因此有些其它辅助的功能受到限制,比如不能进行结果高亮、不能通过 addWeight、addRange增加辅助搜索条件。
    简单来说就是,使用addRange之前必须设置查询条件

  • 解决方案:在使用addRange()之前,先设置一个空条件查询:
    $search->setQuery('');
    根据手册介绍:空查询代表查询全部数据

6. 以后遇到了再补充…..

如果有写的不对的地方,欢迎指点.有其他问题也可以私信我
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值