Newer
Older
mailpiler / etc / sphinx.conf.in
@Janos SUTO Janos SUTO on 27 Aug 2022 8 KB Added support for sphinx rt index
#!/usr/bin/php
<?php

define('SPHINX_VERSION', 331); // If you have sphinx-3.3.1, then set SPHINX_VERSION to 331
define('LOCALSTATEDIR', '@LOCALSTATEDIR@');
define('NGRAM_CONFIG', "        #ngram_len               = 1\n        #ngram_chars             = U+3000..U+2FA1F\n");

# See http://sphinxsearch.com/wiki/doku.php?id=charset_tables for more on the charset_table settings
# The following settings contains English and some Latin extras
define('SPHINX_CHARSET_TABLE', "0..9, english, _, \
                                  U+C1->U+E1, U+C4->U+E4, U+C5->U+E5, U+C6->U+E6, U+C9->U+E9, U+CD->U+ED, U+D3->U+F3, U+D6->U+F6, U+D8->U+F8, \
                                  U+DA->U+FA, U+DC->U+FC, U+0150->U+0151, U+0152->U+0153, U+0170->U+0171, U+01E2->U+E6, U+01E3->U+E6, U+01FC->U+E6, \
                                  U+01FD->U+E6, U+1D01->U+E6, U+1D02->U+E6, U+1D2D->U+E6, U+1D46->U+E6, \
                                  U+DF, U+E1, U+E4, U+E5, U+E6, U+E9, U+ED, U+00F3, U+F6, U+F8, U+FA, U+FC, U+0151, U+0153, U+0171\n");

// Sphinx 3.3.1 introduced some strict rules for fulltext search column names
// In order to comply with it you must enable SPHINX_STRICT_SCHEMA variable
// Be sure to check out http://www.mailpiler.org/wiki/current:sphinx3 for more
// NB: The SPHINX_STRICT_SCHEMA in sphinx.conf MUST BE THE SAME as in config.php (or in config-site.php)
//
define('SPHINX_STRICT_SCHEMA', 1);


if(SPHINX_STRICT_SCHEMA) {
   define('SELECT_FIELDS', 'id, `from` as sender, `to` as rcpt, `fromdomain` as senderdomain, `todomain` as rcptdomain, `subject`, `arrived`, `sent`, `body`, `size`, `direction`, `folder`, `attachments`, `attachment_types`');
} else {
   define('SELECT_FIELDS', 'id, `from`, `to`, `fromdomain`, `todomain`, `subject`, `arrived`, `sent`, `body`, `size`, `direction`, `folder`, `attachments`, `attachment_types`');
}

?>

#
# minimal sphinx configuration suited to piler
#

source base
{
   type = mysql
   sql_host = MYSQL_HOSTNAME
   sql_db = MYSQL_DATABASE
   sql_user = MYSQL_USERNAME
   sql_pass = MYSQL_PASSWORD

   sql_attr_uint = size
   sql_attr_uint = sent
   sql_attr_uint = attachments
}

<?php if(RT == 0) { ?>

source delta : base
{
   sql_query_pre = SET NAMES utf8mb4
   sql_query_pre  = REPLACE INTO sph_counter SELECT 1, IFNULL(MAX(id), 0) FROM sph_index
   sql_query_post_index  = DELETE FROM sph_index WHERE id<=(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
   sql_query = SELECT <?php print SELECT_FIELDS; ?> FROM sph_index WHERE id <= (SELECT max_doc_id FROM sph_counter WHERE counter_id=1)

<?php if(SPHINX_VERSION < 300) { ?>
   sql_query_killlist = SELECT `id` FROM `metadata` WHERE `deleted`=1
<?php } else { ?>
   sql_query_kbatch = SELECT `id` FROM `metadata` WHERE `deleted`=1
<?php } ?>
}

source main1 : base
{
   sql_query_pre = SET NAMES utf8mb4
   sql_query = SELECT <?php print SELECT_FIELDS; ?> FROM sph_index WHERE id=-1
}

source main2 : base
{
   sql_query_pre = SET NAMES utf8mb4
   sql_query = SELECT <?php print SELECT_FIELDS; ?> FROM sph_index WHERE id=-1
}

source main3 : base
{
   sql_query_pre = SET NAMES utf8mb4
   sql_query = SELECT <?php print SELECT_FIELDS; ?> FROM sph_index WHERE id=-1
}

source main4 : base
{
   sql_query_pre = SET NAMES utf8mb4
   sql_query = SELECT <?php print SELECT_FIELDS; ?> FROM sph_index WHERE id=-1
}

source dailydelta : base
{
   sql_query_pre = SET NAMES utf8mb4
   sql_query = SELECT <?php print SELECT_FIELDS; ?> FROM sph_index WHERE id=-1
}
?>

source tag : base
{
   sql_query_pre = SET NAMES utf8mb4
   sql_query  = SELECT `_id`, `id` AS iid, `uid`, `tag` FROM `tag`

   sql_attr_uint = iid
   sql_attr_uint = uid

}

source note : base
{
   sql_query_pre = SET NAMES utf8mb4
   sql_query  = SELECT `_id`, `id` AS iid, `uid`, `note` FROM `note`

   sql_attr_uint = iid
   sql_attr_uint = uid

}

<?php if(RT == 0) { ?>
index main1
{
        source                  = main1
        path                    = <?php print LOCALSTATEDIR; ?>/piler/sphinx/main1
<?php if(SPHINX_VERSION < 300) { ?>
        docinfo                 = extern
        dict                    = keywords
<?php } ?>
        min_prefix_len          = 5
        min_word_len            = 1
        charset_table           = <?php print SPHINX_CHARSET_TABLE; ?>
<?php print NGRAM_CONFIG; ?>
}

index main2
{
        source                  = main2
        path                    = <?php print LOCALSTATEDIR; ?>/piler/sphinx/main2
<?php if(SPHINX_VERSION < 300) { ?>
        docinfo                 = extern
        dict                    = keywords
<?php } ?>
        min_prefix_len          = 5
        min_word_len            = 1
        charset_table           = <?php print SPHINX_CHARSET_TABLE; ?>
<?php print NGRAM_CONFIG; ?>
}

index main3
{
        source                  = main3
        path                    = <?php print LOCALSTATEDIR; ?>/piler/sphinx/main3
<?php if(SPHINX_VERSION < 300) { ?>
        docinfo                 = extern
        dict                    = keywords
<?php } ?>
        min_prefix_len          = 5
        min_word_len            = 1
        charset_table           = <?php print SPHINX_CHARSET_TABLE; ?>
<?php print NGRAM_CONFIG; ?>
}

index main4
{
        source                  = main4
        path                    = <?php print LOCALSTATEDIR; ?>/piler/sphinx/main4
<?php if(SPHINX_VERSION < 300) { ?>
        docinfo                 = extern
        dict                    = keywords
<?php } ?>
        min_prefix_len          = 5
        min_word_len            = 1
        charset_table           = <?php print SPHINX_CHARSET_TABLE; ?>
<?php print NGRAM_CONFIG; ?>
}

index dailydelta1
{
        source                  = dailydelta
        path                    = <?php print LOCALSTATEDIR; ?>/piler/sphinx/dailydelta1
<?php if(SPHINX_VERSION < 300) { ?>
        docinfo                 = extern
        dict                    = keywords
<?php } ?>
        min_prefix_len          = 5
        min_word_len            = 1
        charset_table           = <?php print SPHINX_CHARSET_TABLE; ?>
<?php print NGRAM_CONFIG; ?>
}

index delta1
{
        source                  = delta
        path                    = <?php print LOCALSTATEDIR; ?>/piler/sphinx/delta1
<?php if(SPHINX_VERSION < 300) { ?>
        docinfo                 = extern
        dict                    = keywords
<?php } ?>
        min_prefix_len          = 5
        min_word_len            = 1
        charset_table           = <?php print SPHINX_CHARSET_TABLE; ?>
<?php print NGRAM_CONFIG; ?>
<?php if(SPHINX_VERSION >= 310) { ?>
        kbatch = main1, main2, main3, main4, dailydelta1
<?php } ?>
}

<?php } ?>

index tag1
{
        source                  = tag
        path                    = <?php print LOCALSTATEDIR; ?>/piler/sphinx/tag1
<?php if(SPHINX_VERSION < 300) { ?>
        docinfo                 = extern
        dict                    = keywords
<?php } ?>
        min_prefix_len          = 5
        min_word_len            = 1
        charset_table           = <?php print SPHINX_CHARSET_TABLE; ?>
<?php print NGRAM_CONFIG; ?>
}


index note1
{
        source                  = note
        path                    = <?php print LOCALSTATEDIR; ?>/piler/sphinx/note1
<?php if(SPHINX_VERSION < 300) { ?>
        docinfo                 = extern
        dict                    = keywords
<?php } ?>
        min_prefix_len          = 5
        min_word_len            = 1
        charset_table           = <?php print SPHINX_CHARSET_TABLE; ?>
<?php print NGRAM_CONFIG; ?>
}

<?php if(RT == 1) { ?>
index piler1
{
    type = rt
    path = /var/piler/sphinx/piler1
    rt_mem_limit = 128M
    rt_field = sender
    rt_field = rcpt
    rt_field = senderdomain
    rt_field = rcptdomain
    rt_field = subject
    rt_field = body
    rt_field = attachment_types
    rt_attr_bigint = arrived
    rt_attr_bigint = sent
    rt_attr_uint = size
    rt_attr_uint = direction
    rt_attr_uint = folder
    rt_attr_uint = attachments
}
<?php } ?>

indexer
{
        mem_limit               = 256M
}


searchd
{
        listen                  = 127.0.0.1:9312
        listen                  = 127.0.0.1:9306:mysql41
        log                     = /dev/null
        binlog_path             = /var/piler/sphinx
        binlog_max_log_size     = 16M
        binlog_flush            = 2
<?php if(RT == 1) { ?>
        rt_flush_period         = 300
<?php } ?>
        ##query_log             =
        read_timeout            = 5
        max_children            = 30
        pid_file                = /var/run/piler/searchd.pid
        seamless_rotate         = 1
        preopen_indexes         = 1
        unlink_old              = 1
        thread_stack            = 512k
        workers                 = thread_pool
}