#if you have many posts, it's best to configure another index for new posts and 
#periodically merge the diff index to the main
#this is not important until you get to hundreds of thousands posts

source src_askbot
{
    # data source
    type        = mysql
    sql_host    = localhost
    sql_user    = {{ db_user }} #replace with your db username
    sql_pass    = {{ db_password }} #replace with your db password
    sql_db      = {{ db_name }} #replace with your db name
    # these two are optional
    #sql_port   = 3306
    #sql_sock   = /var/lib/mysql/mysql.sock

    # pre-query, executed before the main fetch query
    sql_query_pre   = SET NAMES utf8

    # main document fetch query - change the table names if you are using a prefix
    # this query creates a flat document from each question that includes only latest
    # revisions of the question and all of it's answers
    sql_query       =       SELECT q.id as id, q.title AS title, t.tagnames as tags, qr.text AS text, answers_combined.text AS answers \
                            FROM question AS q \
                            INNER JOIN askbot_thread as t \
                            ON t.id=q.thread_id \
                            INNER JOIN \
                            ( \
                                SELECT MAX(id) as id, question_id \
                                FROM askbot_postrevision \
                                WHERE revision_type = 1 \
                                GROUP BY question_id \
                            ) \
                            AS mqr \
                            ON q.id=mqr.question_id \
                            INNER JOIN askbot_postrevision AS qr ON qr.id=mqr.id \
                            LEFT JOIN \
                            ( \
                                SELECT GROUP_CONCAT(answer_current.text SEPARATOR '. ') AS text, \
                                       question_id \
                                FROM \
                                ( \
                                    SELECT a.question_id as question_id, ar.text as text \
                                    FROM answer AS a \
                                    INNER JOIN \
                                    ( \
                                        SELECT MAX(id) as id, answer_id \
                                        FROM askbot_postrevision \
                                        WHERE revision_type = 2 \
                                        GROUP BY answer_id \
                                    ) \
                                    AS mar \
                                    ON mar.answer_id = a.id \
                                    INNER JOIN askbot_postrevision AS ar ON ar.id=mar.id \
                                    WHERE a.deleted=0 \
                                ) \
                                AS answer_current \
                                GROUP BY question_id \
                            ) \
                            AS answers_combined ON q.id=answers_combined.question_id \
                            WHERE q.deleted=0;

    # optional - used by command-line search utility to display document information
    sql_query_info  = SELECT title, id FROM question WHERE id=$id
}

index askbot {
    # which document source to index
    source      = src_askbot

    # this is path and index file name without extension
    # you may need to change this path or create this folder
    path        = /var/data/sphinx/askbot_main

    # docinfo (ie. per-document attribute values) storage strategy
    docinfo     = extern

    # morphology
    morphology  = stem_en

    # stopwords file
    #stopwords  = /var/data/sphinx/stopwords.txt

    # minimum word length
    min_word_len    = 1

    # uncomment next 2 lines to allow wildcard (*) searches
    #min_infix_len = 1
    #enable_star = 1

    # charset encoding type
    charset_type    = utf-8
}

# indexer settings
indexer
{
    # memory limit (default is 32M)
    mem_limit   = 64M
}

# searchd settings
searchd
{
    # IP address on which search daemon will bind and accept
    # optional, default is to listen on all addresses,
    # ie. address = 0.0.0.0
    address     = 127.0.0.1

    # port on which search daemon will listen
    port        = 3312

    # searchd run info is logged here - create or change the folder
    log     = /var/log/sphinx/searchd.log

    # all the search queries are logged here
    query_log   = /var/log/sphinx/query.log

    # client read timeout, seconds
    read_timeout    = 5

    # maximum amount of children to fork
    max_children    = 30

    # a file which will contain searchd process ID
    pid_file    = /var/log/sphinx/searchd.pid

    # maximum amount of matches this daemon would ever retrieve
    # from each index and serve to client
    max_matches = 1000
}
