Spinx环境搭建

前言

之前存了很多文本数据 - 具体是啥就不说了

很早之前就想对其内容进行检索了,自己写一个又觉得太麻烦,而且效率估计还低下。

百度搜了下又ELK和Spinx这2个方案,都测试了下,ELK太大了,感觉要花费好多时间去了解,Spinx暂时应该能满足我的需求了。

加上最近觉得自己挺久没写博客了,将这次搭建Spinx文本检索环境的过程记录下来。

环境搭建

1.从官网下载sphinx-3.1.1,我使用的是这个版本。

2.将etc目录下的sphinx-min.conf.dist配置文件复制到Bin下面,命名为sphinx.conf。

3.配置如下,该配置支持中文。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
source src1
{
type = mysql

sql_host = localhost
sql_user = root
sql_pass = root
sql_db = sheg
sql_port = 3306 # optional, default is 3306
sql_query_pre = set charset utf8
sql_query = \
SELECT id, mail, name, idcard, passwd, phone, mail2 \
FROM `12306`
sql_attr_uint = group_id
sql_attr_timestamp = date_added
}


index sk12306
{
source = src1
path = F:\sk\sphinx-3.1.1\data\sk12306\
# 设置中文匹配
min_word_len = 1
# 指定字符集(已废弃)
charset_type = utf-8
# 指定utf-8的编码表
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
min_prefix_len = 0
min_infix_len = 3
# 开启中文分词支持
ngram_len = 1
# 需要分词的字符
ngram_chars = U+3000..U+2FA1F
}


index rt
{
type = rt
rt_mem_limit = 128M
path = F:\sk\sphinx-3.1.1\data\testrt\
rt_field = name
rt_field = idcard
rt_field = mail
rt_field = passwd
rt_field = mail_2
rt_field = phone
rt_attr_uint = gid
}


indexer
{
mem_limit = 128M
}


searchd
{
listen = 9312
listen = 9306:mysql41
log = F:\sk\sphinx-3.1.1\log\searchd.log
query_log = F:\sk\sphinx-3.1.1\log\query.log
read_timeout = 5
max_children = 30
pid_file = F:\sk\sphinx-3.1.1\log\searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads # for RT to work
binlog_path = F:\sk\sphinx-3.1.1\log
}

查询指定列 idcard: @idcard xxxxxxx
模糊查询 352225*
中文默认模糊查询

4.将某库代码放到PHP下运行就可以了。

那么问题了,先整理数据还是把某库修改成适合我的文本查询器呢。

记一次PHPstudy无法正常启动

C盘满了,把PHPStudy换到D盘,结果启动不了。。

由于我之前比较谨慎,一直用的非服务模式,也就是没有系统服务,那么唯一的可能就是配置文件写了绝对路径了。

打开 php下的php.ini 修改 extension_dir属性
打开 apache下的httpd.conf 修改 ServerRoot 和 DocumentRoot 属性
打开 mysql下的my.ini 修改 basedir 和 datadir

重新打开,搞定收工!。

搭建CTFD平台

安装Flask

1
pip install Flask

下载安装CTFD

1
2
3
4
5
git clone https://github.com/isislab/CTFd.git
cd CTFd
./prepare.sh #需手动排查各种依赖包
需先安装 libicu-dev包 apt-get install libicu-dev
python serve.py

优化CTFD

1
2
pip install gunicorn
gunicorn --bind 0.0.0.0:8000 -w 4 "CTFd:create_app()"

Docker的基本使用

Docker常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
docker ps   #  docker进程管理系统

-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。

docker run

-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
-m :设置容器使用内存最大值;

docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器

docker kill : 强行关闭一个容器

docker rm :删除一个或多少容器

docker rmi :删除一个或多少镜像

docker images :查看所有镜像


docker save lnmp -o lnmp.tar
docker load -i lnmpp.tar

以上方法用于保存整个docekr

docker export [OPTIONS] CONTAINER # -o :将输入内容写到文件。
docker import my_ubuntu_v3.tar runoob/ubuntu:v4


docker build -t runoob/ubuntu:v1 .

docker tag 打标签

Debian安装docker

1.更新源

1
apt-get update

这里使用的是163的源

2.安装工具

1
apt-get install      apt-transport-https      ca-certificates      curl      gnupg2      software-properties-common

3.下载添加GPG

1
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

4.添加仓库

1
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

5.更新源

1
apt-get update

6.安装docker

1
apt-get install docker-ce