Implementation of sphsf-chinese full-text search

Source: Internet
Author: User

The following is the configuration file:

Source cv {
Type = mysql
SQL _host = localhost
SQL _user = root
SQL _pass = passwod
SQL _db = database
SQL _query_pre = SET NAMES utf8
SQL _query = \
SELECT id, title, introtext, unix_timestamp (created) as addtime \
FROM jos_content
SQL _attr_timestamp = addtime
SQL _ranged_throttle = 0
}
Index cv {
Source = cv
Path =/usr/local/sphinx/var/data/joomlainx
Docinfo = extern
Mlock = 0
Stopwords =
Min_prefix_len = 0
Min_infix_len = 0
Min_word_len = 2
Charset_type = UTF-8
Charset_table = U + ff10 .. U + FF19-> 0 .. 9, 0 .. 9, U + FF41 .. U + FF5A-> .. z, U + ff21 .. U + FF3A-> .. z ,\
A .. z-> .. z, .. z, U + 0149, U + 017F, U + 0138, U + 00DF, U + 00FF, U + 00C0 .. U + 00D6-> U + 00E0 .. U + 00F6 ,\
U + 00E0 .. U + 00F6, U + 00D8 .. U + 00DE-> U + 00F8 .. U + 00FE, U + 00F8 .. U + 00FE, U + 0100-> U + 0101, U + 0101 ,\
U + 0102-> U + 0103, U + 0103, U + 0104-> U + 0105, U + 0105, U + 0106-> U + 0107, U + 0107, U + 0108-> U + 0109 ,\
U + 0109, U + 010A-> U + 010B, U + 010B, U + 010C-> U + 010D, U + 010D, U + 010E-> U + 010F, U + 010F ,\
U + 0110-> U + 0111, U + 0111, U + 0112-> U + 0113, U + 0113, U + 0114-> U + 0115, U + 0115, U + 0116-> U + 0117 ,\
U + 0117, U + 0118-> U + 0119, U + 0119, U + 011A-> U + 011B, U + 011B, U + 011C-> U + 011D, U + 011D ,\
U + 011E-> U + 011F, U + 011F, U + 0130-> U + 0131, U + 0131, U + 0132-> U + 0133, U + 0133, U + 0134-> U + 0135 ,\
U + 0135, U + 0136-> U + 0137, U + 0137, U + 0139-> U + 013A, U + 013A, U + 013B-> U + 013C, U + 013C ,\
U + 013D-> U + 013E, U + 013E, U + 013F-> U + 0140, U + 0140, U + 0141-> U + 0142, U + 0142, U + 0143-> U + 0144 ,\
U + 0144, U + 0145-> U + 0146, U + 0146, U + 0147-> U + 0148, U + 0148, U + 014A-> U + 014B, U + 014B ,\
U + 014C-> U + 014D, U + 014D, U + 014E-> U + 014F, U + 014F, U + 0150-> U + 0151, U + 0151, U + 0152-> U + 0153 ,\
U + 0153, U + 0154-> U + 0155, U + 0155, U + 0156-> U + 0157, U + 0157, U + 0158-> U + 0159, U + 0159 ,\
U + 015A-> U + 015B, U + 015B, U + 015C-> U + 015D, U + 015D, U + 015E-> U + 015F, U + 015F, U + 0160-> U + 0161 ,\
U + 0161, U + 0162-> U + 0163, U + 0163, U + 0164-> U + 0165, U + 0165, U + 0166-> U + 0167, U + 0167 ,\
U + 0168-> U + 0169, U + 0169, U + 016A-> U + 016B, U + 016B, U + 016C-> U + 016D, U + 016D, U + 016E-> U + 016F ,\
U + 016F, U + 0170-> U + 0171, U + 0171, U + 0172-> U + 0173, U + 0173, U + 0174-> U + 0175, U + 0175 ,\
U + 0176-> U + 0177, U + 0177, U + 0178-> U + 00FF, U + 00FF, U + 0179-> U + 017A, U + 017A, U + 017B-> U + 017C ,\
U + 017C, U + 017D-> U + 017E, U + 017E, U + 0410 .. U + 042F-> U + 0430 .. U + 044F, U + 0430 .. U + 044F ,\
U + 05D0 .. U + 05EA, U + 0531 .. U + 0556-> U + 0561 .. U + 0586, U + 0561 .. U + 0587, U + 0621 .. U + 063A, U + 01B9 ,\
U + 01BF, U + 0640 .. U + 064A, U + 0660 .. U + 0669, U + 066E, U + 066F, U + 0671 .. U + 06D3, U + 06F0 .. U + 06FF ,\
U + 0904 .. U + 0939, U + 0958 .. U + 095F, U + 0960 .. U + 0963, U + 0966 .. U + 096F, U + 097B .. U + 097F ,\
U + 0985 .. U + 09B9, U + 09CE, U + 09DC .. U + 09E3, U + 09E6 .. U + 09EF, U + 0A05 .. U + 0A39, U + 0A59 .. U + 0A5E ,\
U + 0A66 .. U + 0A6F, U + 0A85 .. U + 0AB9, U + 0AE0 .. U + 0AE3, U + 0AE6 .. U + 0AEF, U + 0B05 .. U + 0B39 ,\
U + 0B5C .. U + 0B61, U + 0B66 .. U + 0B6F, U + 0B71, U + 0B85 .. U + 0BB9, U + 0BE6 .. U + 0BF2, U + 0C05 .. U + 0C39 ,\
U + 0C66 .. U + 0C6F, U + 0C85 .. U + 0CB9, U + 0CDE .. U + 0e3, U + 0CE6 .. U + 0CEF, U + 0D05 .. U + 0D39, U + 0D60 ,\
U + 0D61, U + 0D66 .. U + 0D6F, U + 0D85 .. U + 0DC6, U + 1900 .. U + 1938, U + 1946 .. U + 194F, U + a800 .. U + A805 ,\
U + a807 .. U + A822, U + 0386-> U + 03B1, U + 03AC-> U + 03B1, U + 0388-> U + 03B5, U + 03AD-> U + 03B5, \
U + 0389-> U + 03B7, U + 03AE-> U + 03B7, U + 038A-> U + 03B9, U + 0390-> U + 03B9, U + 03AA-> U + 03B9 ,\
U + 03AF-> U + 03B9, U + 03CA-> U + 03B9, U + 038C-> U + 03BF, U + 03CC-> U + 03BF, U + 038E-> U + 03C5 ,\
U + 03AB-> U + 03C5, U + 03B0-> U + 03C5, U + 03CB-> U + 03C5, U + 03CD-> U + 03C5, U + 038F-> U + 03C9 ,\
U + 03CE-> U + 03C9, U + 03C2-> U + 03C3, U + 0391 .. U + 03A1-> U + 03B1 .. U + 03C1 ,\
U + 03A3 .. U + 03A9-> U + 03C3 .. U + 03C9, U + 03B1 .. U + 03C1, U + 03C3 .. U + 03C9, U + 0E01 .. U + 0E2E ,\
U + 0E30 .. U + 0E3A, U + 0E40 .. U + 0E45, U + 0E47, U + 0E50 .. U + 0E59, U + a000 .. U + A48F, U + 4E00 .. U + 9FBF ,\
U + 3400 .. U + 4DBF, U + 20000 .. U + 2A6DF, U + f900 .. U + FAFF, U + 2F800 .. U + 2FA1F, U + 2E80 .. U + 2EFF ,\
U + 2F00 .. U + 2FDF, U + 3100 .. U + 312F, U + 31A0 .. U + 31BF, U + 3040 .. U + 309F, U + 30A0 .. U + 30FF ,\
U + 31F0 .. U + 31FF, U + ac00 .. U + D7AF, U + 1100 .. U + 11FF, U + 3130 .. U + 318F, U + a000 .. U + A48F ,\
U + a490.. U + A4CF
Ngram_len = 1
Ngram_chars = U + 4E00 .. U + 9FBF, U + 3400 .. U + 4DBF, U + 20000 .. U + 2A6DF, U + f900.. U + FAFF ,\
U + 2F800 .. U + 2FA1F, U + 2E80 .. U + 2EFF, U + 2F00 .. U + 2FDF, U + 3100 .. U + 312F, U + 31A0 .. U + 31BF ,\
U + 3040 .. U + 309F, U + 30A0 .. U + 30FF, U + 31F0 .. U + 31FF, U + ac00 .. U + D7AF, U + 1100 .. U + 11FF ,\
U + 3130 .. U + 318F, U + a000.. U + A48F, U + a490.. U + A4CF
}

Indexer {
Mem_limit = 32 M
}
Searchd {
Port = 3312
Log =/usr/local/sphinx/var/log/searchd. log
Query_log =/usr/local/sphinx/var/log/query. log
Read_timeout = 5
Max_children = 30
Pid_file =/usr/local/sphinx/var/log/searchd. pid
Max_matches = 1000
Seamless_rotate = 1
}

You can refer to this configuration file to modify the user and save the password directory to meet your own mysql requirements. There are some problems with the configuration of the official website of sphology. The most important thing is that the morphology = none Section cannot be used in Chinese. Otherwise, the searchd service cannot be started.

After the configuration is complete, you can perform the index:

/Usr/local/sphinx/bin/indexer -- config/usr/local/sphinx/etc/sphinx. conf -- all

Then you can start searchd

/Usr/local/sphinx/bin/searchd -- config/usr/local/sphinx/etc/sphinx. conf

We will use the php api to search and copy all the api files in the installation directory to the root directory of the website. The most important thing is sphinxapi. php.

Create a test. php file with the following code:

<?php require 'sphinxapi.php';$q=$_GET['q']; $mode=SPH_MATCH_ALL; $host='localhost'; $port=3312; $index='*'; $groupby=''; $groupsort='@group desc'; $filter='site_id'; $filtervals=array(); $distinct=''; $sortby=''; $limit=20; $opts=array('before_match'=>'<b>','after_match'=>'</b>','chunk_separator'=>' ... ','limit'=>60,'around'=>3); $ranker=SPH_RANK_PROXIMITY_BM25;$cl=new SphinxClient(); $cl->SetServer($host,$port); $cl->SetWeights(array(100,1)); $cl->SetMatchMode($mode); if(count($filtervals))$cl->SetFilter($filter,$filtervals); if($groupby)$cl->SetGroupBy($groupby,SPH_GROUPBY_ATTR,$groupsort); if($sortby)$cl->SetSortMode(SPH_SORT_EXTENDED,$sortby); if($sortexpr)$cl->SetSortMode(SPH_SORT_EXPR,$sortexpr); if($distinct)$cl->SetGroupDistinct($distinct); if($limit)$cl->SetLimits(0,$limit,($limit>1000)?$limit:1000); $cl->SetRankingMode($ranker); $cl->SetArrayResult(true); $res=$cl->Query($q,$index); ?>

This is the simplest test example, note that the stored charset is UTF-8, no BOM, now you can test through the http://www.phpernote.com/test.php, the results will return an array, sphinx will not return title and content, etc, therefore, you need to search by id in mysql to display the article title and body.

Currently, the index file generated by sphenders cannot exceed 2 GB.

Articles you may be interested in
  • Install and use Sphinx in windows [Chinese full-text search is supported]
  • Php. ini configuration Manual
  • PHP is the safest and most practical solution to determine the type of uploaded files
  • Php smarty Chinese interception plug-in development example
  • Thinkphp intercepts Chinese strings
  • In php, we use the curl post method to submit data and the get method to obtain webpage data.
  • How does php convert the br line breaks in html to line breaks in text input?
  • Analysis on abstract classes and abstract methods in php

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.