安装sphinx
CSFT介绍
CSFT,全称为CoreSeek Fulltext Search Server,也就是CoreSeek 全文检索服务器。Sphinx默认不支持中文索引及检索,CSFT是在Sphinx基础上开发的全文检索软件,按照GPLv2协议发行。Coreseek (
http://www.coreseek.com) 为sphinx在中国地区的用户提供支持服务。
到写本文时,CSFT最新版为2009.6.7的3.1rc1版。所有版本发表和修订记录见:http://www.coreseek.cn/products/ft_changelog/
CSFT下载
下载地址:http://www.coreseek.cn/products/ft_down/
选择Source版. Coreseek Fulltext Server(源代码) Coreseek Mmseg(源代码)
安装配置CSFT
1.安装mmseg
1.tar zxvf mmseg-3.1.tar.gz
2. cd mmseg-3.1
3. ./configure –prefix=/usr/local/mmseg
4. make && make install
2.安装csft
1.tar zxvf csft-3.1.tar.gz
2. cd csft-3.1
3. ./configure –prefix=/usr/local/sphinx -with-mysql=/usr/local/mysql -with-mysql-includes=/usr/local/mysql/include/mysql -with-mysql-libs=/usr/local/mysql/lib/mysql -with-mmseg-includes=/usr/local/mmseg/include/mmseg -with-mmseg-libs=/usr/local/mmseg/lib -with-mmseg
4. make && make install
注意:在make时若提示找不到iconv,则在configure结束后在src下的Makefile中查找到LIBS,然后加上 -liconv
3.生成词典
重回到mmseg的源代码目录
1.cd data
2. mmseg -u unigram.txt
3. mv unigram.txt.uni uni.lib
4. cp uni.lib /usr/local/sphinx/data/
5.新建mmseg.ini,输入如下内容:
6.[mmseg]
merge_number_and_ascii=1;
number_and_ascii_joint=-;
compress_space=0;
seperate_number_ascii=1;
#merge_number_and_ascii: 字母和数字连续出现是非切分
#number_and_ascii_joint:连接数字和字母可用的符号,如'-' '.' 等
#compress_space:暂时无效
#seperate_number_ascii:是否拆分数字,如 1988 -> 1/x 9/x 8/x 8/x
4.配置索引文件,如下sphinx配置文件,如存在增量索引,请建立下表search_counter:
view plaincopy to clipboardprint?
01.SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
02.
03.--
04.-- 数据库: `xmfish_sp3`
05.--
06.
07.-- --------------------------------------------------------
08.
09.--
10.-- 表的结构 `search_counter`
11.--
12.
13.CREATE TABLE IF NOT EXISTS `search_counter` (
14. `counterid` int(11) NOT NULL DEFAULT '0',
15. `max_doc_id` int(11) NOT NULL DEFAULT '0',
16. `min_doc_id` int(10) NOT NULL DEFAULT '0',
17. PRIMARY KEY (`counterid`)
18.) ENGINE=MyISAM DEFAULT CHARSET=gbk;
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- 数据库: `xmfish_sp3`
--
-- --------------------------------------------------------
--
-- 表的结构 `search_counter`
--
CREATE TABLE IF NOT EXISTS `search_counter` (
`counterid` int(11) NOT NULL DEFAULT '0',
`max_doc_id` int(11) NOT NULL DEFAULT '0',
`min_doc_id` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`counterid`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
5.建立索引 bin/indexer --all(threadsindex)
6.测试搜索 bin/search 'keyword';也可以直接跳到7、8进行测试
7.开启searchd服务 /usr/local/sphinx/bin/searchd &
8.把sphinxapi.php和sphinx.php放到程序目录下进行测试
9.随机启动searchd,echo "/usr/local/sphinx/bin/searchd">>/etc/rc.local
sphinx配置文件和分布式检索
view plaincopy to clipboardprint?
01.source tmsgs
02.{
03. type = mysql
04. sql_host = localhost
05. sql_user = root
06. sql_pass = phpwind.net
07. sql_db = pw_test
08. sql_port = 3306 # optional, default is 3306
09. #sql_sock = /tmp/mysql3307.sock
10. sql_query_pre = SET NAMES gbk
11. sql_query_pre = SET SESSION query_cache_type=OFF
12. sql_query_pre = REPLACE INTO search_counter SELECT 1,MAX(tid)+1,MIN(tid) FROM pw_tmsgs
13. sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 1
14. sql_range_step = 1000
15. sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies,t.content FROM pw_threads th LEFT JOIN pw_tmsgs t USING(tid) WHERE th.tid >= $start AND th.tid < $end
16.
17. sql_attr_uint = authorid
18. sql_attr_uint = hits
19. sql_attr_uint = replies
20. sql_attr_uint = fid
21. sql_attr_timestamp = postdate
22. sql_attr_timestamp = lastpost
23. sql_attr_uint = digest
24.}
25.
26.source addtmsgs
27.{
28. type = mysql
29. sql_host = localhost
30. sql_user = root
31. sql_pass = phpwind.net
32. sql_db = pw_test
33. sql_port = 3306 # optional, default is 3306
34. #sql_sock = /tmp/mysql3307.sock
35. sql_query_pre = SET NAMES gbk
36. sql_query_pre = SET SESSION query_cache_type=OFF
37. sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 1
38. sql_range_step = 100000
39. sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies,t.content FROM pw_threads th LEFT JOIN pw_tmsgs t USING(tid) WHERE th.tid >= $start AND th.tid < $end
40.
41. sql_attr_uint = authorid
42. sql_attr_uint = hits
43. sql_attr_uint = replies
44. sql_attr_uint = fid
45. sql_attr_timestamp = postdate
46. sql_attr_timestamp = lastpost
47. sql_attr_uint = digest
48. sql_query_post = REPLACE INTO search_counter SELECT 1,MAX(tid)+1,MIN(tid) FROM pw_tmsgs
49.
50. #sql_attr_uint = tid
51.}
52.
53.source threads
54.{
55. type = mysql
56. sql_host = localhost
57. sql_user = root
58. sql_pass = phpwind.net
59. sql_db = pw_test
60. sql_port = 3306 # optional, default is 3306
61. #sql_sock = /tmp/mysql3307.sock
62. sql_query_pre = SET NAMES gbk
63. sql_query_pre = SET SESSION query_cache_type=OFF
64. sql_query_pre = REPLACE INTO search_counter SELECT 3,MAX(tid)+1,MIN(tid) FROM pw_threads
65. sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 3
66. sql_range_step = 1000
67. sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies FROM pw_threads th WHERE th.tid >= $start AND th.tid < $end
68. sql_attr_uint = authorid
69. sql_attr_uint = hits
70. sql_attr_uint = replies
71. sql_attr_uint = fid
72. sql_attr_timestamp = postdate
73. sql_attr_timestamp = lastpost
74. sql_attr_uint = digest
75.}
76.
77.source addthreads
78.{
79. type = mysql
80. sql_host = localhost
81. sql_user = root
82. sql_pass = phpwind.net
83. sql_db = pw_test
84. sql_port = 3306 # optional, default is 3306
85. #sql_sock = /tmp/mysql3307.sock
86. sql_query_pre = SET NAMES gbk
87. sql_query_pre = SET SESSION query_cache_type=OFF
88. sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 3
89. sql_range_step = 100000
90. sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies FROM pw_threads th WHERE th.tid >= $start AND th.tid < $end
91.
92. sql_attr_uint = authorid
93. sql_attr_uint = hits
94. sql_attr_uint = replies
95. sql_attr_uint = fid
96. sql_attr_timestamp = postdate
97. sql_attr_timestamp = lastpost
98. sql_attr_uint = digest
99. sql_query_post = REPLACE INTO search_counter SELECT 3,MAX(tid)+1,MIN(tid) FROM pw_threads
100.
101. #sql_attr_uint = tid
102.}
103.#会员表主索引
104.source members
105.{
106. type = mysql
107. sql_host = localhost
108. sql_user = root
109. sql_pass = phpwind.net
110. sql_db = pw_test
111. sql_port = 3306 # optional, default is 3306
112. #sql_sock = /tmp/mysql3307.sock
113. sql_query_pre = SET NAMES gbk
114. sql_query_pre = SET SESSION query_cache_type=OFF
115. sql_query_pre = REPLACE INTO search_counter SELECT 4,MAX(uid)+1,MIN(uid) FROM pw_members
116. sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 4
117. sql_range_step = 1000
118. sql_query = SELECT m.uid,username,groupid,email,oicq,msn,introduce,signature,regdate,onlineip,thisvisit,postnum,lastpost FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE m.uid >= $start AND m.uid < $end
119. sql_attr_uint = groupid
120. sql_attr_uint = username
121. sql_attr_uint = postnum
122. sql_attr_timestamp = regdate
123. sql_attr_timestamp = thisvisit
124. sql_attr_timestamp = lastpost
125.}
126.#会员表增量索引
127.source addmembers
128.{
129. type = mysql
130. sql_host = localhost
131. sql_user = root
132. sql_pass = phpwind.net
133. sql_db = pw_test
134. sql_port = 3306 # optional, default is 3306
135. #sql_sock = /tmp/mysql3307.sock
136. sql_query_pre = SET NAMES gbk
137. sql_query_pre = SET SESSION query_cache_type=OFF
138. sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 4
139. sql_range_step = 100000
140. sql_query = SELECT m.uid,username,groupid,email,oicq,msn,introduce,signature,regdate,onlineip,thisvisit,postnum,lastpost FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE m.uid >= $start AND m.uid < $end
141. sql_attr_uint = groupid
142. sql_attr_uint = username
143. sql_attr_uint = postnum
144. sql_attr_timestamp = regdate
145. sql_attr_timestamp = thisvisit
146. sql_attr_timestamp = lastpost
147. sql_query_post = REPLACE INTO search_counter SELECT 4,MAX(uid)+1,MIN(uid) FROM pw_members
148.}
149.#会员帖子签名主索引
150.source signatures
151.{
152. type = mysql
153. sql_host = localhost
154. sql_user = root
155. sql_pass = phpwind.net
156. sql_db = pw_test
157. sql_port = 3306 # optional, default is 3306
158. #sql_sock = /tmp/mysql3307.sock
159. sql_query_pre = SET NAMES gbk
160. sql_query_pre = SET SESSION query_cache_type=OFF
161. sql_query_pre = REPLACE INTO search_counter SELECT 5,MAX(uid)+1,MIN(uid) FROM pw_members
162. sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 5
163. sql_range_step = 1000
164. sql_query = SELECT m.uid,username,groupid,signature,regdate,onlineip,thisvisit,postnum,lastpost FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE m.uid >= $start AND m.uid < $end
165. sql_attr_uint = groupid
166. sql_attr_uint = username
167. sql_attr_uint = postnum
168. sql_attr_timestamp = regdate
169. sql_attr_timestamp = thisvisit
170. sql_attr_timestamp = lastpost
171.}
172.#会员帖子签名增量索引
173.source addsignatures
174.{
175. type = mysql
176. sql_host = localhost
177. sql_user = root
178. sql_pass = phpwind.net
179. sql_db = pw_test
180. sql_port = 3306 # optional, default is 3306
181. #sql_sock = /tmp/mysql3307.sock
182. sql_query_pre = SET NAMES gbk
183. sql_query_pre = SET SESSION query_cache_type=OFF
184. sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 45
185. sql_range_step = 100000
186. sql_query = SELECT m.uid,username,groupid,signature,regdate,onlineip,thisvisit,postnum,lastpost FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE m.uid >= $start AND m.uid < $end
187. sql_attr_uint = groupid
188. sql_attr_uint = username
189. sql_attr_uint = postnum
190. sql_attr_timestamp = regdate
191. sql_attr_timestamp = thisvisit
192. sql_attr_timestamp = lastpost
193. sql_query_post = REPLACE INTO search_counter SELECT 5,MAX(uid)+1,MIN(uid) FROM pw_members
194.}
195.
196.index tmsgsindex
197.{
198. source = tmsgs
199. path = D:\pwsc\data\tmsgs
200. docinfo = extern
201. charset_type = zh_cn.gbk
202. #min_prefix_len = 0
203. #min_infix_len = 2
204. #ngram_len = 2
205. charset_dictpath = D:\pwsc\dict
206. min_prefix_len = 0
207. min_infix_len = 0
208. min_word_len = 2
209.}
210.
211.index addtmsgsindex
212.{
213. source = addtmsgs
214. path = D:\pwsc\data\addtmsgs
215. docinfo = extern
216. charset_type = zh_cn.gbk
217. #min_infix_len = 2
218. #ngram_len = 2
219.
220.
221. charset_dictpath = D:\pwsc\dict
222. min_prefix_len = 0
223. min_infix_len = 0
224. min_word_len = 2
225.}
226.index threadsindex
227.{
228. source = threads
229. path = D:\pwsc\data\threads
230. docinfo = extern
231. charset_type = zh_cn.gbk
232. #min_prefix_len = 0
233. #min_infix_len = 2
234. #ngram_len = 2
235. charset_dictpath = D:\pwsc\dict
236. min_prefix_len = 0
237. min_infix_len = 0
238. min_word_len = 2
239.}
240.
241.index addthreadsindex
242.{
243. source = addthreads
244. path = D:\pwsc\data\addthreads
245. docinfo = extern
246. charset_type = zh_cn.gbk
247. #min_infix_len = 2
248. #ngram_len = 2
249.
250.
251. charset_dictpath = D:\pwsc\dict
252. min_prefix_len = 0
253. min_infix_len = 0
254. min_word_len = 2
255.}
256.
257.index membersindex
258.{
259. source = members
260. path = D:\pwsc\data\members
261. docinfo = extern
262. charset_type = zh_cn.gbk
263. #min_prefix_len = 0
264. #min_infix_len = 2
265. #ngram_len = 2
266. charset_dictpath = D:\pwsc\dict
267. min_prefix_len = 0
268. min_infix_len = 0
269. min_word_len = 2
270.}
271.
272.index addmembersindex
273.{
274. source = addmembers
275. path = D:\pwsc\data\addmembers
276. docinfo = extern
277. charset_type = zh_cn.gbk
278. #min_prefix_len = 0
279. #min_infix_len = 2
280. #ngram_len = 2
281. charset_dictpath = D:\pwsc\dict
282. min_prefix_len = 0
283. min_infix_len = 0
284. min_word_len = 2
285.}
286.
287.index signaturesindex
288.{
289. source = signatures
290. path = D:\pwsc\data\signatures
291. docinfo = extern
292. charset_type = zh_cn.gbk
293. #min_prefix_len = 0
294. #min_infix_len = 2
295. #ngram_len = 2
296. charset_dictpath = D:\pwsc\dict
297. min_prefix_len = 0
298. min_infix_len = 0
299. min_word_len = 2
300.}
301.
302.index addsignaturesindex
303.{
304. source = addsignatures
305. path = D:\pwsc\data\addsignatures
306. docinfo = extern
307. charset_type = zh_cn.gbk
308. #min_prefix_len = 0
309. #min_infix_len = 2
310. #ngram_len = 2
311. charset_dictpath = D:\pwsc\dict
312. min_prefix_len = 0
313. min_infix_len = 0
314. min_word_len = 2
315.}
316.indexer
317.{
318. mem_limit = 128M
319.}
320.
321.searchd
322.{
323. port = 3312
324. log = D:\pwsc\logs\searchd.log
325. query_log = D:\pwsc\logs\query.log
326. read_timeout = 5
327. max_children = 30
328. pid_file = D:\pwsc\logs\searchd.pid
329. max_matches = 1000
330. # seamless_rotate = 1
331. preopen_indexes = 0
332. unlink_old = 1
333.}
source tmsgs
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = phpwind.net
sql_db = pw_test
sql_port = 3306 # optional, default is 3306
#sql_sock = /tmp/mysql3307.sock
sql_query_pre = SET NAMES gbk
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_pre = REPLACE INTO search_counter SELECT 1,MAX(tid)+1,MIN(tid) FROM pw_tmsgs
sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 1
sql_range_step = 1000
sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies,t.content FROM pw_threads th LEFT JOIN pw_tmsgs t USING(tid) WHERE th.tid >= $start AND th.tid < $end
sql_attr_uint = authorid
sql_attr_uint = hits
sql_attr_uint = replies
sql_attr_uint = fid
sql_attr_timestamp = postdate
sql_attr_timestamp = lastpost
sql_attr_uint = digest
}
source addtmsgs
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = phpwind.net
sql_db = pw_test
sql_port = 3306 # optional, default is 3306
#sql_sock = /tmp/mysql3307.sock
sql_query_pre = SET NAMES gbk
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 1
sql_range_step = 100000
sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies,t.content FROM pw_threads th LEFT JOIN pw_tmsgs t USING(tid) WHERE th.tid >= $start AND th.tid < $end
sql_attr_uint = authorid
sql_attr_uint = hits
sql_attr_uint = replies
sql_attr_uint = fid
sql_attr_timestamp = postdate
sql_attr_timestamp = lastpost
sql_attr_uint = digest
sql_query_post = REPLACE INTO search_counter SELECT 1,MAX(tid)+1,MIN(tid) FROM pw_tmsgs
#sql_attr_uint = tid
}
source threads
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = phpwind.net
sql_db = pw_test
sql_port = 3306 # optional, default is 3306
#sql_sock = /tmp/mysql3307.sock
sql_query_pre = SET NAMES gbk
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_pre = REPLACE INTO search_counter SELECT 3,MAX(tid)+1,MIN(tid) FROM pw_threads
sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 3
sql_range_step = 1000
sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies FROM pw_threads th WHERE th.tid >= $start AND th.tid < $end
sql_attr_uint = authorid
sql_attr_uint = hits
sql_attr_uint = replies
sql_attr_uint = fid
sql_attr_timestamp = postdate
sql_attr_timestamp = lastpost
sql_attr_uint = digest
}
source addthreads
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = phpwind.net
sql_db = pw_test
sql_port = 3306 # optional, default is 3306
#sql_sock = /tmp/mysql3307.sock
sql_query_pre = SET NAMES gbk
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 3
sql_range_step = 100000
sql_query = SELECT th.tid,th.subject,th.authorid,th.postdate,th.lastpost,th.fid,th.digest,th.hits,th.replies FROM pw_threads th WHERE th.tid >= $start AND th.tid < $end
sql_attr_uint = authorid
sql_attr_uint = hits
sql_attr_uint = replies
sql_attr_uint = fid
sql_attr_timestamp = postdate
sql_attr_timestamp = lastpost
sql_attr_uint = digest
sql_query_post = REPLACE INTO search_counter SELECT 3,MAX(tid)+1,MIN(tid) FROM pw_threads
#sql_attr_uint = tid
}
#会员表主索引
source members
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = phpwind.net
sql_db = pw_test
sql_port = 3306 # optional, default is 3306
#sql_sock = /tmp/mysql3307.sock
sql_query_pre = SET NAMES gbk
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_pre = REPLACE INTO search_counter SELECT 4,MAX(uid)+1,MIN(uid) FROM pw_members
sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 4
sql_range_step = 1000
sql_query = SELECT m.uid,username,groupid,email,oicq,msn,introduce,signature,regdate,onlineip,thisvisit,postnum,lastpost FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE m.uid >= $start AND m.uid < $end
sql_attr_uint = groupid
sql_attr_uint = username
sql_attr_uint = postnum
sql_attr_timestamp = regdate
sql_attr_timestamp = thisvisit
sql_attr_timestamp = lastpost
}
#会员表增量索引
source addmembers
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = phpwind.net
sql_db = pw_test
sql_port = 3306 # optional, default is 3306
#sql_sock = /tmp/mysql3307.sock
sql_query_pre = SET NAMES gbk
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 4
sql_range_step = 100000
sql_query = SELECT m.uid,username,groupid,email,oicq,msn,introduce,signature,regdate,onlineip,thisvisit,postnum,lastpost FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE m.uid >= $start AND m.uid < $end
sql_attr_uint = groupid
sql_attr_uint = username
sql_attr_uint = postnum
sql_attr_timestamp = regdate
sql_attr_timestamp = thisvisit
sql_attr_timestamp = lastpost
sql_query_post = REPLACE INTO search_counter SELECT 4,MAX(uid)+1,MIN(uid) FROM pw_members
}
#会员帖子签名主索引
source signatures
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = phpwind.net
sql_db = pw_test
sql_port = 3306 # optional, default is 3306
#sql_sock = /tmp/mysql3307.sock
sql_query_pre = SET NAMES gbk
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_pre = REPLACE INTO search_counter SELECT 5,MAX(uid)+1,MIN(uid) FROM pw_members
sql_query_range = SELECT min_doc_id, max_doc_id FROM search_counter WHERE counterid = 5
sql_range_step = 1000
sql_query = SELECT m.uid,username,groupid,signature,regdate,onlineip,thisvisit,postnum,lastpost FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE m.uid >= $start AND m.uid < $end
sql_attr_uint = groupid
sql_attr_uint = username
sql_attr_uint = postnum
sql_attr_timestamp = regdate
sql_attr_timestamp = thisvisit
sql_attr_timestamp = lastpost
}
#会员帖子签名增量索引
source addsignatures
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = phpwind.net
sql_db = pw_test
sql_port = 3306 # optional, default is 3306
#sql_sock = /tmp/mysql3307.sock
sql_query_pre = SET NAMES gbk
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_range = SELECT max_doc_id, max_doc_id+100000 FROM search_counter WHERE counterid = 45
sql_range_step = 100000
sql_query = SELECT m.uid,username,groupid,signature,regdate,onlineip,thisvisit,postnum,lastpost FROM pw_members m LEFT JOIN pw_memberdata md ON md.uid=m.uid WHERE m.uid >= $start AND m.uid < $end
sql_attr_uint = groupid
sql_attr_uint = username
sql_attr_uint = postnum
sql_attr_timestamp = regdate
sql_attr_timestamp = thisvisit
sql_attr_timestamp = lastpost
sql_query_post = REPLACE INTO search_counter SELECT 5,MAX(uid)+1,MIN(uid) FROM pw_members
}
index tmsgsindex
{
source = tmsgs
path = D:\pwsc\data\tmsgs
docinfo = extern
charset_type = zh_cn.gbk
#min_prefix_len = 0
#min_infix_len = 2
#ngram_len = 2
charset_dictpath = D:\pwsc\dict
min_prefix_len = 0
min_infix_len = 0
min_word_len = 2
}
index addtmsgsindex
{
source = addtmsgs
path = D:\pwsc\data\addtmsgs
docinfo = extern
charset_type = zh_cn.gbk
#min_infix_len = 2
#ngram_len = 2
charset_dictpath = D:\pwsc\dict
min_prefix_len = 0
min_infix_len = 0
min_word_len = 2
}
index threadsindex
{
source = threads
path = D:\pwsc\data\threads
docinfo = extern
charset_type = zh_cn.gbk
#min_prefix_len = 0
#min_infix_len = 2
#ngram_len = 2
charset_dictpath = D:\pwsc\dict
min_prefix_len = 0
min_infix_len = 0
min_word_len = 2
}
index addthreadsindex
{
source = addthreads
path = D:\pwsc\data\addthreads
docinfo = extern
charset_type = zh_cn.gbk
#min_infix_len = 2
#ngram_len = 2
charset_dictpath = D:\pwsc\dict
min_prefix_len = 0
min_infix_len = 0
min_word_len = 2
}
index membersindex
{
source = members
path = D:\pwsc\data\members
docinfo = extern
charset_type = zh_cn.gbk
#min_prefix_len = 0
#min_infix_len = 2
#ngram_len = 2
charset_dictpath = D:\pwsc\dict
min_prefix_len = 0
min_infix_len = 0
min_word_len = 2
}
index addmembersindex
{
source = addmembers
path = D:\pwsc\data\addmembers
docinfo = extern
charset_type = zh_cn.gbk
#min_prefix_len = 0
#min_infix_len = 2
#ngram_len = 2
charset_dictpath = D:\pwsc\dict
min_prefix_len = 0
min_infix_len = 0
min_word_len = 2
}
index signaturesindex
{
source = signatures
path = D:\pwsc\data\signatures
docinfo = extern
charset_type = zh_cn.gbk
#min_prefix_len = 0
#min_infix_len = 2
#ngram_len = 2
charset_dictpath = D:\pwsc\dict
min_prefix_len = 0
min_infix_len = 0
min_word_len = 2
}
index addsignaturesindex
{
source = addsignatures
path = D:\pwsc\data\addsignatures
docinfo = extern
charset_type = zh_cn.gbk
#min_prefix_len = 0
#min_infix_len = 2
#ngram_len = 2
charset_dictpath = D:\pwsc\dict
min_prefix_len = 0
min_infix_len = 0
min_word_len = 2
}
indexer
{
mem_limit = 128M
}
searchd
{
port = 3312
log = D:\pwsc\logs\searchd.log
query_log = D:\pwsc\logs\query.log
read_timeout = 5
max_children = 30
pid_file = D:\pwsc\logs\searchd.pid
max_matches = 1000
# seamless_rotate = 1
preopen_indexes = 0
unlink_old = 1
}
分布式检索
index test{
type=distributed
agent=localhost:3312:index1,index2....
agent=192.168.1.2:3312:index3,index4.....
agent_connect_timeout=1000
agent_query_timeout=3000
}