[New VM] RockyLinux85 => Copy vm
[Network] eth0, VLAN_76
[Memory] 4G
eth0 - dhcp
eth1 - ip : 192.168.71.76(Sphinx)
[Sphinx]
오픈소스의 검색엔진이다.
https://sphinxsearch.com/downloads/current/
Linux x64 binaries 다운로드
sphinx-3.5.1-82c60cb-linux-amd64.tar.gz
tar xvfp sphinx-3.5.1-82c60cb-linux-amd64.tar.gz -C /usr/local/
ln -s /usr/local/sphinx-3.5.1/ /usr/local/sphinx
mkdir /home/db/sphinx
[sphinx.conf]
  source datasrc
  {
    type    = mysql
    sql_host  = localhost
    sql_user  = user
    sql_pass  = password
    sql_db    = dbname
    sql_port  = 3306
    sql_query_pre = SET NAMES utf8
    sql_query_pre = SET SESSION query_cache_type=OFF
    
    sql_query = SELECT pk as docid, title, content, name FROM TableName WHERE searchengine='Y';
    sql_field_string = title
    sql_field_string = content
    sql_field_string = name
  }
  source datadelta:datasrc
  {
    sql_query_pre = SET NAMES utf8
    sql_query = SELECT pk as docid, title, content, name FROM TableName WHERE searchengine='N';
    sql_query_post = UPDATE TableName SET searchengine='Y' WHERE searchengine='N'
    #sql_query_kbatch = SELECT pk FROM TableName WHERE searchengine='D'
  }
  index dataindex
  {
    source      = datasrc
    charset_table    = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
    min_infix_len    = 6 ## min_infix_len 는 '검색할 때 반드시 매칭되어야 하는 최소 문자 수'
    min_prefix_len    = 6
    ngram_len      = 1
    ngram_chars    = U+4E00..U+9FBB, U+3400..U+4DB5, U+20000..U+2A6D6, U+FA0E, U+FA0F, U+FA11, U+FA13, U+FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27, U+FA28, U+FA29, U+3105..U+312C, U+31A0..U+31B7, U+3041, U+3043, U+3045, U+3047, U+3049, U+304B, U+304D, U+304F, U+3051, U+3053, U+3055, U+3057, U+3059, U+305B, U+305D, U+305F, U+3061, U+3063, U+3066, U+3068, U+306A..U+306F, U+3072, U+3075, U+3078, U+307B, U+307E..U+3083, U+3085, U+3087, U+3089..U+308E, U+3090..U+3093, U+30A1, U+30A3, U+30A5, U+30A7, U+30A9, U+30AD, U+30AF, U+30B3, U+30B5, U+30BB, U+30BD, U+30BF, U+30C1, U+30C3, U+30C4, U+30C6, U+30CA, U+30CB, U+30CD, U+30CE, U+30DE, U+30DF, U+30E1, U+30E2, U+30E3, U+30E5, U+30E7, U+30EE, U+30F0..U+30F3, U+30F5, U+30F6, U+31F0, U+31F1, U+31F2, U+31F3, U+31F4, U+31F5, U+31F6, U+31F7, U+31F8, U+31F9, U+31FA, U+31FB, U+31FC, U+31FD, U+31FE, U+31FF, U+AC00..U+D7A3, U+1100..U+1159, U+1161..U+11A2, U+11A8..U+11F9, U+A000..U+A48C, U+A492..U+A4C6
  }
  index RTdata
  {
    type      = rt
    rt_mem_limit  = 1024M
    rt_attr_string  = title
    rt_attr_string  = content
    rt_field  = title
    rt_field  = content
    charset_table  = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
    min_infix_len  = 2
    ngram_len    = 1
    ngram_chars  = U+4E00..U+9FBB, U+3400..U+4DB5, U+20000..U+2A6D6, U+FA0E, U+FA0F, U+FA11, U+FA13, U+FA14, U+FA1F, U+FA21, U+FA23, U+FA24, U+FA27, U+FA28, U+FA29, U+3105..U+312C, U+31A0..U+31B7, U+3041, U+3043, U+3045, U+3047, U+3049, U+304B, U+304D, U+304F, U+3051, U+3053, U+3055, U+3057, U+3059, U+305B, U+305D, U+305F, U+3061, U+3063, U+3066, U+3068, U+306A..U+306F, U+3072, U+3075, U+3078, U+307B, U+307E..U+3083, U+3085, U+3087, U+3089..U+308E, U+3090..U+3093, U+30A1, U+30A3, U+30A5, U+30A7, U+30A9, U+30AD, U+30AF, U+30B3, U+30B5, U+30BB, U+30BD, U+30BF, U+30C1, U+30C3, U+30C4, U+30C6, U+30CA, U+30CB, U+30CD, U+30CE, U+30DE, U+30DF, U+30E1, U+30E2, U+30E3, U+30E5, U+30E7, U+30EE, U+30F0..U+30F3, U+30F5, U+30F6, U+31F0, U+31F1, U+31F2, U+31F3, U+31F4, U+31F5, U+31F6, U+31F7, U+31F8, U+31F9, U+31FA, U+31FB, U+31FC, U+31FD, U+31FE, U+31FF, U+AC00..U+D7A3, U+1100..U+1159, U+1161..U+11A2, U+11A8..U+11F9, U+A000..U+A48C, U+A492..U+A4C6
  }
  indexer
  {
    mem_limit = 1024M
  }
  searchd
  {
    listen    = 9312
    listen    = 9306:mysql41
    read_timeout  = 5
    max_children  = 30
    seamless_rotate  = 1
    preopen_indexes  = 1
    unlink_old  = 1
    workers    = threads # for RT to work
    pid_file  = /path/db/sphinx/searchd.pid
  }
# index DATAJOIN
# {
#   type = distributed
#   agent = 127.0.0.1:9312:DATAINDEX001
#   agent = 127.0.0.1:9312:DATAINDEX002
# }
  common {
    datadir = /path/db/sphinx
  }
[start.sh]
#!/bin/bash
if [ -e "/path/db/sphinx/searchd.pid" ]
then
echo "Running Sphinx ... ";
else
/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf
fi
[stop.sh]
#!/bin/bash
/usr/local/sphinx/bin/searchd --stop --config /usr/local/sphinx/etc/sphinx.conf
[Setting]
/bin/cp -rf sphinx.conf /usr/local/sphinx/etc/sphinx.conf
/bin/cp -rf start.sh /usr/local/sphinx/bin/start.sh
/bin/cp -rf stop.sh /usr/local/sphinx/bin/stop.sh
[crontab full indexer]
#!/bin/bash
/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf --all --rotate
[crontab delta indexer]
#!/bin/bash
## 증분 index
/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf INDEXDATA_DELTA --rotate
## merge 실행
/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf --merge INDEXDATA INDEXDATA_DELTA --rotate
[root@localhost ~]# mysql -h0 -P9306
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 3.5.1 (commit 82c60cb)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show tables;
+--------------+-------------+
| Index | Type |
+--------------+-------------+
| DATAJOIN | distributed |
| DATAINDEX001 | local |
| DATAINDEX001 | local |
| dataindex | local |
| RTdata | rt |
+--------------+-------------+
5 rows in set (0.001 sec)
MySQL [(none)]>