我在我的项目中设置了django-sphinx,它只在一段时间内完美运行。稍后它总是返回空结果集。令人惊讶的是,重启django app会修复它。并且搜索再次工作,但仅在短时间内(或非常有限的查询数量)。继承人我的sphinx.conf:
source src_questions
{
# data source
type = mysql
sql_host = xxxxxx
sql_user = xxxxxx #replace with your db username
sql_pass = xxxxxx #replace with your db password
sql_db = xxxxxx #replace with your db name
# these two are optional
sql_port = xxxxxx
#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
sql_query = SELECT q.id AS id, q.title AS title, q.tagnames AS tags, q.html AS text, q.level AS level \
FROM question AS q \
WHERE q.deleted=0 \
# optional - used by command-line search utility to display document information
sql_query_info = SELECT title, id, level FROM question WHERE id=$id
sql_attr_uint = level
}
index questions {
# which document source to index
source = src_questions
# this is path and index file name without extension
# you may need to change this path or create this folder
path = /home/rafal/index/index_questions
# 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 = 3
# 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 = ../log/sphinx.log
# all the search queries are logged here
query_log = ../log/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 = searchd.pid
# maximum amount of matches this daemon would ever retrieve
# from each index and serve to client
max_matches = 1000
}
以及来自views.py:
的我的搜索部分content = Question.search.query(keywords)
if level:
content = content.filter(level=level)#level is array of integers
任何日志都没有错误,它不会返回任何结果。我已经将'indexer --rotate --all'设置为每隔5分钟在cron中运行,并且searchd一直在运行。 非常感谢所有帮助。
答案 0 :(得分:0)
狮身人面像的版本是什么? Django的狮身人面像? sphinxsearch api?蟒?
无论如何,请尝试从indexer
&中删除cron
。看看这个问题是否仍然存在。让我知道这是怎么回事。