No konsoles
Instalācija - apt install sphinxsearch
konfigurācijas fails /etc/sphinxsearch/sphinx.conf
faila saturs līdzīgi kā te:
Konfigurē uz esošo pieprasijumu uz tabulu datu bāzē vai veido jaunu tabulu testam un attiecīgi norādīt uz viņu.
source src_test_db
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = test_db
sql_port = 3306 # optional, default is 3306
sql_query = \
SELECT id, category_id, UNIX_TIMESTAMP(date_created) AS date_created, text \
FROM questions
sql_attr_uint = category_id
sql_attr_timestamp = date_created
sql_field_string = text
sql_query_pre = SET CHARACTER_SET_RESULTS=utf8
sql_query_pre = SET NAMES utf8
}
index test_db #indeksa nosaukums
{
source = test_db #indeksa nosaukums
path = /var/lib/sphinxsearch/data/index_test_db
morphology = stem_enru
html_strip = 1
min_word_len = 2
min_infix_len = 1
index_exact_words = 1
expand_keywords = 1
#charset_table = 0..9, A..Z->a..z, a..z, (, ), {, }, [, ], $, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+0435, U+451->U+0435, U+2A, U+2D, U+00AB, U+00D7
}
indexer
{
mem_limit = 256M
}
searchd
{
listen = 127.0.0.1:9306:mysql41
log = /var/lib/sphinxsearch/log/searchd.log
query_log = /var/lib/sphinxsearch/log/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
#workers = threads # for RT to work
binlog_path = /var/lib/sphinxsearch/data
}
sistēmas restarts, indeks
systemctl restart sphinxsearch indexer --all --verbose
Servisa palaišana
/usr/bin/searchd -c /etc/sphinxsearch/sphinx.conf
tests no konsoles
mysql -h0 -P9306
SELECT id FROM tabula WHERE MATCH('meklējamais vārds'); SHOW META;
tālāk no php var izmantot pieslēgumu portam 9306 un veikt pieprasijumu nevis tabulai, bet indeksam un iegūt identifikātoru, piemēram:
$link = mysqli_connect("localhost:9306", "Lietotājs", "", "indeksa nosaukums");$key=$_GET['sometext'];$n=0;$id = mysqli_query($link,"SELECT id FROM indeksa nosaukums WHERE MATCH('$key') LIMIT 500");foreach($id as $key=>$p){ $n++; if($n =='1'){ $ids .= $p['id']; } else { $ids .= ", ".$p['id']; }
ar iegūtiem id veic pieprasijumu vajadzīgai tabulai:
SELECT * FROM tabulas_nosaukums WHERE id IN ($ids);
datus apstrādā un parāda rezultātu.
Ja kādu iemeslu dēļ nestrādā labi utf-8, tad latviešu valodai var aizvietot ar paša veidotu esošo aizkomentēto krievu valodas charset_table iekš cofig.
Piemēram šādi: charset_table = 0..9, A..Z->a..z, _, a..z, Lielais-burts->mazais-burts, mazais-burts,...
kas izskatās kodā šādi: .... U+104->U+105, U+105,... un tā katru burtiņu, kuru vēlaties ievietot.
Piemērs:
charset_table = 0..9, A..Z->a..z, _, a..z, U+104->U+105, U+105, U+10C->U+10D, U+10D,U+116->U+117, U+117, U+118->U+119, U+119, U+12E->U+12F, U+12F, U+160->U+161, U+161,U+16A->U+16B, U+16B, U+172->U+173, U+173, U+17D->U+17E, U+17E,U+410..U+42F->U+430..U+44F, U+430..U+44F
Vairāk info par charset unicode latviešu val. var iegūt - compart.com
Vārdu formas
Lai reģistrētu vārdu formas, piemēram, sarkans > sarkanā - ir jāizveido teksta dokuments wordforms.txt, kur katrā rindiņā norāda ko un uz ko pārveido. Tālāk saiti uz šo dokumentu ievieto config failā.
Piemērs
wordforms.txt saturs:
pastaiga > staigāt
miegs > gulēt
saites izvietošana config failā.
index test_db #indeksa nosaukums {....wordforms = /var/lib/sphinxsearch/data/wordforms.txt}
Sharing is caring, show love and share the thread with your friends.