XunSearch的使用

一、项目的配置文件

1、要想使用xunsearch,首先需要进行配置文件的配置。

默认目录在app下,如下面的结构,每一个搜索项目都需要有一个ini文件进行相应的配置。

 

举例:

project.name = novel
project.default_charset = utf-8
server.index = 8383
server.search = 8384[novel_id]
type = id[title]
type = title[author_name][description]
type = body[last_time]
type = date

 

2、每个字段用一个区段配置来表示,中括号内的名字即为字段名。每个项目包含若干个字段,具体由项目搜索需求决定,并不需一味的与实际源数据库 (如 MYSQL) 一致,而只需要设计搜索功能所涉及的字段即可。

 

3、这里为了安全起见,我同样对查询出的数据起了别名,进而一一对应xunsearch中ini文件定义的字段(第三部分可以看到)。

 

chm手册下载地址:http://www.xunsearch.com/site/download/xs_php_manual.chm

建议如果初次使用xunsearch,则从手册最开始跟着操作一遍。尤其是新手上路部分。

注:在线生成编辑配置文件ini http://www.xunsearch.com/tools/iniconfig

 

二、生成骨架文件【建议最好执行这步,节省很多开发时间】

文档地址:http://www.xunsearch.com/doc/php/guide/util.skel

 

三、从数据库查询出需要的数据,并且将数据添加到xunsearch索引数据库

这里,我是在我外层定义了一个php文件来完成添加数据到XunSearch索引数据库的操作,代码如下

<?php
//require '/data/xun/lib/XS.php';
require './lib/XS.php';$XS = new XS('novel');// 建立 XS 对象,项目名称为:novel
$index = $XS->index; // 获取 索引对象//创建pdo对象,并从表中读出需要的数据
$dsn = "mysql:dbname=test;host=127.0.0.1";
$pdo = new PDO($dsn,'root','123456');
$sql = "select comic_id as novel_id,name as title,pen_name as author_name,description,last_verify_time as last_time from front_comic";
$stmt = $pdo->query($sql);
$data = $stmt->fetchAll(2);//循环添加数据到XunSearch索引库
foreach ($data as $v){// 创建文档对象$doc = new XSDocument();$doc->setFields($v);// 添加到索引数据库中$res = $index->add($doc);
}$res = $res ? 'success' : 'fail';
echo $res;

执行a.php文件,则从数据库查询出来的数据就添加到XunSearch索引数据库中了。

 

四、演示效果

这里,访问之前我们生成的对应的骨架文件就可以看到效果了。

到这里,基本的全文检索就已经实现了。

总结:

1、XunSearch全文检索的原理就是将mysql数据库中的我们需要的数据查询出来,并一一对应的添加到XunSearch的索引数据库中,然后,用户在前端查询的时候,就直接查询的是Xunsearch索引数据库中的内容了。这样,可以说速度就变得非常非常快了。

2、在项目中引入XunSearch或者sphinx等全文检索工具,则会大大降低mysql的压力,并且能够更快速的检索出用户需要的数据,无疑体验会更加好。

3、XunSearch索引数据库的文件默认存储在/usr/local/xunsearch/data/项目名 中,每一个项目有自己独立的一个存储库,如下:

4、进入novel项目的存储库,我们可以看到三个文件,一个是存储数据的,一个是存储日志的,一个是存储搜索记录的

 

 

值得注意的是:在测试演示效果的时候,由于xunsearch数据库并不是你这边刚提交完,那边数据就直接更新了,而是异步的(默认大概每两个小时才更新一次),所以,为了更快速的看到效果,我们需要手动去刷新,如下:

util/Indexer.php --flush-log novel

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《VMware vSphere设计(原书第2版)》——1.1 什么是设计

本节书摘来自华章出版社《VMware vSphere设计&#xff08;原书第2版&#xff09;》一 书中的第1章&#xff0c;第1.1节&#xff0c;作者&#xff1a;[美] 福布斯格思里&#xff08;Forbes Guthrie&#xff09;斯科特罗威&#xff08;Scott Lowe&#xff09;肯德里克科尔曼&…

SqlKata - 方便好用的 Sql query builder

SqlKata查询生成器是一个用C# 编写的功能强大的Sql查询生成器。它是安全的&#xff0c;与框架无关。灵感来源于可用的顶级查询生成器&#xff0c;如Laravel Query Builder和 Knex&#xff1a;https://knexjs.org/。SqlKata有一个富有表现力的API。它遵循一个干净的命名约定&…

编写高质量代码:改善Java的151个建议四(基本类型)21-30

该书籍PDF下载地址&#xff1a;http://download.csdn.net/download/muyeju/10001473 基本类型有8个&#xff1a;byte&#xff0c;short&#xff0c;int&#xff0c;char&#xff0c;long&#xff0c;double&#xff0c;float&#xff0c;boolean 21.用偶判断&#xff0c;不用奇…

ABP vNext微服务架构详细教程(补充篇)——单层模板(下)

业务代码2聚合服务聚合服务层和基础服务层相同的道理&#xff0c;在Demo.Core.Contracts增加Services文件夹&#xff0c;并添加Notifications子文件夹&#xff0c;在其中添加Dtos文件夹并添加两个DTO与基础服务对应&#xff1a;using Volo.Abp.Application.Dtos;namespace Demo…

PHP 电子商城基本数据表

1、品牌表 tp_brand CREATE TABLE tp_brand (id smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 品牌表,name varchar(60) NOT NULL DEFAULT COMMENT 品牌名称,logo varchar(80) NOT NULL DEFAULT COMMENT 品牌logo,desc text NOT NULL COMMENT 品牌描述,url varcha…

摘要,日志

1.hashlib 模块: 由于数据的不安全性,为了保证用户的信息绝对安全,所有所有人的账号密码不能以明文的形式存储, 而是经过适当的处理以密文的形式存储. hashlib对同一个字符串在不同的语言,不同的环境(操作系统,版本,时间)中加密得到的是同一个密文串,不同的字符串得到的密文是不…

《网站情感化设计与内容策略》一第1章 情感化设计1.1 革命:有失亦有得

本节书摘来自异步社区《网站情感化设计与内容策略》一书中的第1章&#xff0c;第1.1节&#xff0c;作者 【美】Aarron Walter , Erin Kissane&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 第1章 情感化设计 网站情感化设计与内容策略 1.1 革命&#xff1…

php自动加载机制的实现

一、什么是自动加载 自动加载就是当我们在当前文件中实例化一个不存在的类时&#xff0c;调用自动加载机制引入相应的类文件。 注&#xff1a;自动加载有两种方式&#xff08;都是php内置的&#xff09;&#xff0c;一种是通过__autoload(),另一种是通过spl_autoload_registe…

MySQL之 从复制延迟问题排查

一、从库复制延迟问题 1、可能的原因如下&#xff08;1&#xff09;主从服务器处于不同的网络之中&#xff0c;由于网络延迟导致&#xff1b;&#xff08;2&#xff09;主从服务器的硬件配置不同&#xff0c;从服务器的硬件配置&#xff08;包括内存&#xff0c;CPU&#xff0c…

《树莓派渗透测试实战》——2.12 用例子总结以上步骤

本节书摘来异步社区《树莓派渗透测试实战》一书中的第2章&#xff0c;第2.12节&#xff0c;作者【美】Joseph Muniz&#xff08;约瑟夫 穆尼斯&#xff09; , Aamir Lakhani&#xff08;阿米尔 拉克哈尼&#xff09;&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号…

申请成为qq互联个人开发者步骤(注意事项)2018

一、官方网址 官方地址&#xff1a;https://connect.qq.com/manage.html#/ 二、申请时注意事项&#xff1a; 1、申请时的名称栏必须填写身份证上的姓名&#xff0c;否则是不给通过的 2、上传照片时&#xff0c;需要本人手持身份证&#xff0c;重点是照片中身份证上头像的位置要…

《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器

本节书摘来自异步社区《Swift开发实战》一书中的第1章&#xff0c;第1.4节启动iOS 8模拟器&#xff0c;作者 李宁&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 1.4 启动iOS 8模拟器Xcode是一款功能全面的应用程序&#xff0c;通过此工具可以轻松输入、编译…

基于.NetCore开发博客项目 StarBlog - (18) 实现本地Typora文章打包上传

1前言九月太忙&#xff0c;只更新了三篇文章&#xff0c;本来这个功能是从九月初就开始做的&#xff0c;结果一直拖到现在国庆假期才有时间完善并且写文章~之前我更新了几篇关于 Python 的文章&#xff0c;有朋友留言问是不是不更新 .Net 了&#xff0c;那肯定不能啊&#xff0…

《算法导论》读书笔记--第1、2章课后题 (转)

第一章 转自http://www.cnblogs.com/batteryhp/p/4654860.html 思考题 1-1&#xff08;运行时间的比较&#xff09;确定时间t内求解的问题的最大规模。 上面是网上提供的答案。 注意点&#xff1a; 1、最左边一列的是关于n的增长情况描述&#xff0c;值得记住的是这些增长的排…

PHP开发自己的框架必备知识点

一、PHP常用的四种数据结构 简介&#xff1a;spl是php的一个标准库。 官方文档&#xff1a;http://php.net/manual/zh/book.spl.php <?php//spl&#xff08;php标准库&#xff09;数据结构/*** 栈&#xff08;先进后出&#xff09;*/ $stack new SplStack(); $stack-&g…

Linux 环境下 jdk1.8 maven3.2.3 Git2.8.0 安装脚本

2019独角兽企业重金招聘Python工程师标准>>> # Author: peizhouyu # Date: 2018-09-07 14:24:11 # Last Modified by: peizhouyu # Last Modified time: 2018-09-07 16:02:58#!/bin/bash SOFT_PATH/opt/softif [ ! -d $SOFT_PATH ];then mkdir $SOFT_PATH else …

《嵌入式设备驱动开发精解》——导读

前言 嵌入式设备驱动开发精解本书的编写主要是针对从事嵌入式软件开发人员。本书的内容主要涵盖ARM CPU以及各种常用外部设备驱动开发的方方面面&#xff0c;包括各种硬件接口、硬件接口协议说明以及各种外设的使用及调试方法&#xff0c;特别是对于开发调试过程中可能遇到的各…

C# WPF通过WindowChrome自定义窗体

概述在WPF界面开发中&#xff0c;系统默认的窗口比较丑&#xff0c;有时候想自定义窗体&#xff0c;比如微信的客户端窗口这样&#xff1a;使得左边的一块顶到最上端&#xff0c;如下图所示&#xff1a;这时候我们可以 WindowStyle"None"&#xff0c;AllowsTranspare…

【转载】递推公式的特征方程及通项公式

先贴上链接&#xff1a;http://blog.csdn.net/happykocola/article/details/73933314 因为最近在复习初赛&#xff0c;然后碰到了这道题&#xff0c;并不会做&#xff0c;才发现有这么高明的方法... 已知递推关系式&#xff1a; f(n)5f(n-1)-6f(n-2) (n>1) f(0)1 f(1)…

【leetcode】75. Sort Colors

题目如下&#xff1a; 解题思路&#xff1a;我的解题思路是遍历数组&#xff0c;遇到0删除该元素并插入到数组头部&#xff0c;遇到1则不处理&#xff0c;遇到2删除该元素并插入到数组尾部。 代码如下&#xff1a; class Solution(object):def sortColors(self, nums):"&q…