#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