0
저는 약간의 시간 동안 완벽하게 작동하는 프로젝트에서 장고 스핑크스를 설정했습니다. 나중에 항상 빈 결과 집합을 반환합니다. 놀랍게도 django 응용 프로그램을 다시 시작하면 문제가 해결됩니다. 그리고 검색은 짧은 시간 동안 (또는 매우 제한된 수의 쿼리) 다시 만 작동합니다. views.py에서장고 스핑크스는 앱 재시동 후에 만 작동합니다
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
}
과를 heres 내 검색 부분 : Heres는 내 sphinx.conf
content = Question.search.query(keywords)
if level:
content = content.filter(level=level)#level is array of integers
어떤 로그에 오류가 없습니다, 그냥 밤은 어떤 결과를 반환. 나는 'indexer --rotate --all'을 cron에서 매 5 분마다 실행하도록 설정했으며 searchd는 항상 실행 중입니다. 모든 도움을 주시면 감사하겠습니다.