Subversion Repositories Applications.papyrus

Rev

Rev 2105 | Rev 2113 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
# http://www.tela-botanica.org/page:recherche
# mysql -h0 -P 9306
# SELECT * FROM i_spip WHERE MATCH('@texte mousse');

# sudo sphinx-indexer i_spip -c /etc/sphinx/sphinx-min.conf
# sudo sphinx-searchd -c /etc/sphinx/sphinx-min.conf
source common
{
        type                    = mysql

        sql_host                = localhost
        sql_user                = root
        sql_pass                =
        sql_db                  = raphdb
        sql_sock                = /home/raphael/web/mysql/mysql.sock
    #sql_query_pre   = SET NAMES utf8
    sql_query_pre   = SET NAMES latin1
}


index i_common
{
        # source                        =
        # path                  = /var/lib/sphinx/XXX
        docinfo                 = extern
        charset_type    = sbcs
        stopwords               = /etc/sphinx/stopwords.txt

    # http://sphinxsearch.com/docs/2.1.1/conf-morphology.html
        morphology              = libstemmer_french
        enable_star             = 1
    min_word_len    = 3
    # min_prefix_len  = 3
    min_infix_len   = 3

    # prefix_fields   = 
    # infix_fields    = 

    phrase_boundary = ., ?, !, U+2026

    # http://sphinxsearch.com/wiki/doku.php?id=charset_tables
    # mysql raphdb<<<"SELECT p_description FROM projet WHERE p_id = 121"|xxd
    # sphinx-search -q -c sphinx-min.conf -i i_projet "homoge*|homogé"|grep -w hits
    # SELECT * FROM i_projet WHERE MATCH('homoge*|homogé'); SHOW META;
    charset_table               = U+00C8->e, U+00C9->e, U+00CA->e, U+00CB->e, U+00E8->e, U+00E9->e, U+00EA->e, U+00EB->e, U+0112->e, U+0113->e, U+0114->e, U+0115->e, U+0116->e, U+0117->e, U+0118->e, U+0119->e, U+011A->e, U+011B->e, U+018E->e, U+0190->e, U+01DD->e, U+0204->e, U+0205->e, U+0206->e, U+0207->e, U+0228->e, U+0229->e, U+0246->e, U+0247->e, U+0258->e, U+025B->e, U+025C->e, U+025D->e, U+025E->e, U+029A->e, U+1D07->e, U+1D08->e, U+1D31->e, U+1D32->e, U+1D49->e, U+1D4B->e, U+1D4C->e, U+1D92->e, U+1D93->e, U+1D94->e, U+1D9F->e, U+1E14->e, U+1E15->e, U+1E16->e, U+1E17->e, U+1E18->e, U+1E19->e, U+1E1A->e, U+1E1B->e, U+1E1C->e, U+1E1D->e, U+1EB8->e, U+1EB9->e, U+1EBA->e, U+1EBB->e, U+1EBC->e, U+1EBD->e, U+1EBE->e, U+1EBF->e, U+1EC0->e, U+1EC1->e, U+1EC2->e, U+1EC3->e, U+1EC4->e, U+1EC5->e, U+1EC6->e, U+1EC7->e, U+2091->e, \
    U+00CC->i, U+00CD->i, U+00CE->i, U+00CF->i, U+00EC->i, U+00ED->i, U+00EE->i, U+00EF->i, U+010309->i, U+0128->i, U+0129->i, U+012A->i, U+012B->i, U+012C->i, U+012D->i, U+012E->i, U+012F->i, U+0130->i, U+0131->i, U+0197->i, U+01CF->i, U+01D0->i, U+0208->i, U+0209->i, U+020A->i, U+020B->i, U+0268->i, U+026A->i, U+040D->i, U+0418->i, U+0419->i, U+0438->i, U+0439->i, U+0456->i, U+1D09->i, U+1D35->i, U+1D4E->i, U+1D62->i, U+1D7B->i, U+1D96->i, U+1DA4->i, U+1DA6->i, U+1DA7->i, U+1E2C->i, U+1E2D->i, U+1E2E->i, U+1E2F->i, U+1EC8->i, U+1EC9->i, U+1ECA->i, U+1ECB->i, U+2071->i, U+2111->i, \
    0..9, A..Z->a..z, _, a..z, \
    U+A8->U+B8, U+B8, U+C0..U+DF->U+E0..U+FF, U+E0..U+FF

    # later (2.1.1)
    # lemmatizer_base = /usr/share/sphinx/dicts/
}


# SPIP
source spip : common
{
        # bibliotheque/more_recherche_spip_article.class.php
        # premier champ = index (obligatoire)

        # surtitre = '' partout
        # descriptif = '' partout
        # chapo = '' partout
        # soustitre = '' partout sauf id = 19
        # ps = '' partout sauf id = 19
        sql_query               = \
                SELECT id_article, titre, texte, date, lang, "spip" AS group_id, CONCAT("spip-", id_article) as main_id \
              FROM spip_articles WHERE statut = "publie"

#       sql_attr_uint           = id_article
        sql_attr_timestamp      = date
        sql_attr_string         = lang
        sql_field_string        = group_id      # sql field pour permettre du filtrage @group_id != spip par exemple
        sql_attr_string         = main_id

        sql_field_string        = titre

        sql_query_info          = SELECT * FROM sphinx_doc WHERE id=$id
}

index i_spip : i_common {
        source                  = spip
        path                    = /var/lib/sphinx/spip

    # prefix_fields   = titre, texte
    infix_fields    = titre, texte
}



# PAPYRUS
source papyrus : common
{
    #gm_nom
        #gm_titre
        #gm_titre_alternatif
    #gm_mots_cles                       # TODO
    #gm_description_libre               # TODO
        #gm_description_resume              # TODO
        #gm_description_table_matieres      partout '' sauf gm_id_menu = 1
    #gm_source                          partout '' sauf gm_id_menu = 587
        #gm_auteur                          # TODO
        #gm_contributeur                    # TODO
        #gm_editeur                         # TODO
        #gm_categorie                       # TODO
    #gm_public                          partout ''
    #gmc_contenu
    sql_query = \
        SELECT m.gm_id_menu, \
               IF(gm_nom != '', gm_nom, IF(gm_titre != '', gm_titre, gm_titre_alternatif)) as titre, \
               gmc_contenu AS texte, \
               gm_mots_cles,gm_source, gm_auteur, gm_contributeur, gm_editeur, gm_categorie, \
               \
               gm_date_creation,        \
               "papyrus" AS group_id,    \
               CONCAT("papyrus-", m.gm_id_menu) as main_id \
               \
               FROM gen_menu m \
               LEFT JOIN gen_menu_contenu mc  ON mc.gmc_ce_menu      = m.gm_id_menu \
                                              AND mc.gmc_bool_dernier = 1 \
               WHERE m.gm_date_fin_validite = '0000-00-00 00:00:00' OR LOWER(m.gm_date_fin_validite) < now()

        sql_attr_timestamp      = gm_date_creation
        sql_field_string        = group_id
        sql_attr_string         = main_id
}

index i_papyrus : i_common {
        source                  = papyrus
        path                    = /var/lib/sphinx/papyrus

    # prefix_fields   = titre, texte
    infix_fields    = titre, texte
}



# PROJET
source projet : common {
    # p_id
    # p_titre
    # p_resume
    # p_description
    # pd_nom            # erreur dans more_recherche_projet.class.php
    # pd_description    # erreur dans more_recherche_projet.class.php
        sql_query               = \
        SELECT p_id, p_titre AS titre, p_description AS texte, \
               p_resume, \
               p_date_creation, \
               "projet" AS group_id,    \
               CONCAT("projet-", p_id) as main_id \
        FROM projet

        sql_attr_timestamp      = p_date_creation
        sql_field_string        = group_id
        sql_attr_string         = main_id
}

index i_projet : i_common {
        source                  = projet
        path                    = /var/lib/sphinx/projet

    # prefix_fields   = titre, texte
    infix_fields    = titre, texte
}



# BAZAR
source bazar : common {
        sql_query               = \
        SELECT bf_id_fiche, bf_description AS texte, bf_titre AS titre, bf_date_debut_evenement, "bazar" AS group_id, \
        CONCAT("bazar-", bf_id_fiche) as main_id \
        FROM bazar_fiche

        sql_attr_timestamp      = bf_date_debut_evenement
        sql_field_string        = group_id
        sql_attr_string         = main_id
}




# misc...
index i_bazar : i_common {
        source                  = bazar
        path                    = /var/lib/sphinx/bazar

    # prefix_fields   = titre, texte
    infix_fields    = titre, texte
}

index testrt
{
        type                    = rt
        rt_mem_limit            = 32M

        path                    = /var/lib/sphinx/testrt
        charset_type            = utf-8

        rt_field                = title
        rt_field                = content
        rt_attr_uint            = gid
}


indexer
{
        mem_limit               = 32M
}


searchd
{
        listen                  = 127.0.0.1:9312
        listen                  = 9306:mysql41
        log             = /var/log/sphinx/sphinx-searchd.log
        query_log               = /var/log/sphinx/sphinx-query.log
        read_timeout    = 5
        max_children    = 30
        pid_file                = /run/sphinx/sphinx-searchd.pid
        max_matches             = 1000
        seamless_rotate = 1
        preopen_indexes = 1
        unlink_old              = 1
        workers                 = threads # for RT to work
        binlog_path             = /var/lib/sphinx

    #collation_server = utf8_general_ci  # unsure
    #collation_libc_locale = fr_FR.UTF-8

    # collation_libc_locale = fr_FR@euro
    # collation_libc_locale = fr_FR@euro
}




# sudo sphinx-searchd --stop -c sphinx-min.conf; sleep 2; sudo sphinx-indexer -c sphinx-min.conf i_projet; sphinx-search -q -c sphinx-min.conf -i i_projet "@texte homogé*"
# sudo sphinx-searchd -c sphinx-min.conf