Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

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, t.title AS title, t.tagnames as tags, qr.text AS text, answers_combined.text AS answers \
                        FROM askbot_post AS q \
                        INNER JOIN askbot_thread as t \
                        ON t.id=q.thread_id \
                        INNER JOIN \
                        ( \
                            SELECT MAX(id) as id, post_id \
                            FROM askbot_postrevision \
                            GROUP BY post_id \
                        ) \
                        AS mqr \
                        ON q.id=mqr.post_id \
                        INNER JOIN askbot_postrevision AS qr ON qr.id=mqr.id \
                        LEFT JOIN \
                        ( \
                            SELECT GROUP_CONCAT(answer_current.text SEPARATOR '. ') AS text, \
                                   thread_id \
                            FROM \
                            ( \
                                SELECT a.thread_id, a.text as text \
                                FROM askbot_post AS a \
                                WHERE a.deleted=0 and (a.post_type='answer' or a.post_type='comment') \
                            ) \
                            AS answer_current \
                            GROUP BY thread_id \
                        ) \
                        AS answers_combined ON q.id=answers_combined.thread_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

chinese_dictionary = /usr/local/sphinx-for-chinese/etc/xdict

}

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

}

Blockquote