osqa java_从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA(召唤前端)
2.4、OSQA内Sphinx配置文件
接下来为我们的问题搜索写sphinx配置文件,我的配置文件如下:#源定义
source base_source
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = root
sql_db = osqa
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query_info_pre = SET NAMES utf8
sql_range_step = 1000
sql_query =
}
#index定义
index base_index
{
path=
source = base_source #对应的source名称
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
#中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
#charset_dictpath = etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
charset_type = zh_cn.utf-8
ngram_len = 0
}
source search_question_source: base_source
{
sql_query_range = select min(id),max(id) from forum_node
sql_query = SELECT question.id, question.title, author.username, question.tagnames, question.body,\
GROUP_CONCAT(answer.body) as answer_bodies FROM forum_node AS question, forum_node AS answer,\
auth_user AS author WHERE answer.parent_id = question.id AND question.author_id = author.id \
And question.id >= $start and question.id < $end GROUP BY question.id
# sql_attr_uint = group_id #从SQL读取到的值必须为整数,we should add the number of answer
# and update date to rank these questions
# sql_attr_timestamp = date_added #从SQL读取到的值必须为整数,作为时间属性
}
source delta_search_question_source: search_question_source
{
sql_query_range = select min(id),max(id) from forum_node where added_at > DATE_FORMAT(NOW(),'%Y-%m-%d')
}
index search_question_index : base_index
{
source= search_question_source
path= /ROOT/sphinx/index/search_question
}
index delta_search_question_index : search_question_index
{
source= delta_search_question_source
path= /ROOT/sphinx/index/delta_search_question
}
#全局index定义
indexer
{
mem_limit = 128M
}
#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = /ROOT/sphinx/log/searchd_osqa.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = /ROOT/sphinx/log/searchd_osqa.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = /ROOT/sphinx/log/query_osqa.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
可以放在任何文件夹下 只要建索引的时候指定就好。比如我的是放在/ROOT/sphinx/conf/sphinx_osqa.conf,接下来建索引: indexer -c /ROOT/sphinx/conf/sphinx_osqa.conf --all –rotate
Base_index的警告可以忽略,然后启动守护进程 searchd–c /ROOT/sphinx/conf/sphinx_osqa.conf
到此,sphinx的服务端都已经弄好,守护进程searchd在9312端口等待客户端发query。可以简单测试一下 search–c /ROOT/sphinx/conf/sphinx_osqa.conf keywords。
2.5、Sphinx服务端配置的几个问题
Sphinx服务端配置已经完成,虽然自从diable掉mysqlfulltext之后就可以搜到问题,但是用的是Like %keyword%形式的请求。我们现在需要改的有三处:
在/forum/models/question.py
在Question类加入search = SphinxSearch(
index ='search_question_index',
mode='SPH_MATCH_ALL',
),自己根据需求配置,比如设置权重之类的。
加入sphinxsearch引用from djangosphinx.models import SphinxSearch
QuestionManager类加入queryset = Question.search.query(keywords)
将命中的id取出来存成list结构,比如,存到变量ids里,然后直接返回
return False,self.filter(id__in=ids)
这样就返回了命中的id的所有问题。当然这种in的方式如果ids的数据量小的时候还可以,大了之后也不行,所以,后续应该考虑分页的方式来呈现更多的结果。
当然,最终能在服务器端上看到已经有收到请求了,如下图所示:
至此,之前搜到不到关键词/tag的问题成功解决。也就是说,咱们的StackOverflow的原型OSQA已经搭建完成,接下来,便是一系列修改完善优化的工作。最后,可以在5月底之前正式上线,不出所料的话。欢迎有兴趣者加入,谢谢。
参考文献及相关链接
后记
从4月6日和几个朋友正式启动以来,到如今已快一月,尽管我们存在着很多的缺陷,业余时间完成+平均毕业一年+异地协调作战,但一切不足以成为阻碍我们的借口。感谢我的团队/朋友们的支持,特别是菠萝,chx/@,银河系,Damon及志伟。他们给了我足够多的支持和帮助。
非常欢迎在京的有意者加入我们:
熟练or精通前端开发(js/css/html,或熟悉jquery/ajax);
后端(熟练linux/python,或熟悉django框架或进行过web py开发),或有做过大型网站经验的;
上手快,快速自学/开发能力强,业余时间充足,做事专注且有毅力。 有意且具备以上任何一项技能,在京的业余时间充足且想做点事情的,欢迎随时加入我们(加入的唯一条件则是:在本地独自成功搭建OSQA),以造益天下更多人。我的联系方式如下:1、微博@博主July,http://weibo.com/julyweibo;2、邮箱:zhoulei0907@yahoo.cn。
OK,本文或本blog内任何文章有任何问题,欢迎随时不吝赐教/指正。谢谢,完。
osqa java_从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA(召唤前端)相关推荐
- 从LSM Tree COLA Tree谈到StackOverflow OSQA
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 从LSM ...
- 从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA
从LSM-Tree.COLA-Tree谈到StackOverflow.OSQA 作者:July,chx/@罗勍 出处:结构之法算法之道blog 导读 本文重点谈了4个东西,LSM-Tree及COLA- ...
- [转]从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA
来源:http://blog.csdn.net/v_july_v/article/details/7526689 作者:July,chx/@罗勍 导读 本文重点谈了4个东西,LSM-Tree及COLA ...
- 转帖:BTree,B-Tree,B+Tree,B*Tree都是什么
BTree,B-Tree,B+Tree,B*Tree都是什么 转帖自:http://blog.csdn.net/manesking/archive/2007/02/09/1505979.aspx &l ...
- # tree bash: tree: 未找到命令...
今天使用CentOS7想查看tree,现象如下: [root@localhost 桌面]# tree bash: tree: 未找到命令- 显示找不到命令,后来发现原因是部分linux系统没有tree ...
- [置顶]B-tree/B+tree/B*tree [转]
(原文出处: http://blog.csdn.net/hbhhww/article/details/8206846) B~树 1.前言: 动态查找树主要有:二叉查找树(Binary Search T ...
- 蛋花花谈怎么区分web的前端与后端
蛋花花谈怎么区分web的前端与后端!据蛋花花了解在web开发中其实分为web前端与后端,那么两者有什么区别呢?下面蛋花花就来给大家介绍一下怎么区分web的前端与后端. 据蛋花花了解web前端分为网页设 ...
- LSM(Log-Structured Merge Tree)
LSM Tree--分布式存储系统(BigTable)的理论模型 一.什么是LSM Tree 二.基本原理简述 2.1 SSTable和Level 2.2 分布式存储系统(BigTable) 2.2. ...
- 为什么MyISAM会比Innodb的查询速度快。 btree 和 lsm(hbase) ,cola 树(tokuDB)选型和原理
父文章 如何成为一名架构师,架构师成长之路_个人渣记录仅为自己搜索用的博客-CSDN博客_架构师成长之路 相关文章 1.8 leveldb vs rocksdb 优劣分析 对 write stalli ...
最新文章
- 训练 AI 学会通过复制来构建 AI 系统
- PageRank算法--从原理到实现
- Boost.Asio技术文档汇总
- SAP CRM调查问卷的评分和图表显示功能介绍 1
- 舞伴配对问题java_舞伴配对问题
- 了解如何解决OSGI捆绑包
- python设计与调试[摘自笨方法学python]
- 配置IIS Express 7.5以允许外部访问
- angularjs绑定属性_AngularJS隔离范围绑定表达式教程
- android can为啥能发收不到数据_大数据显示:报读MBA已是未来竞争力提升的必然趋势...
- 前端开源项目周报0412
- opencv官网下不了了,分享各版本
- 基于java高校教师管理系统_高校教师电子业务档案管理系统
- 华为U8500使用心得
- 理论算法两手抓,UIUC助理教授孙若愚60页长文综述深度学习优化
- 设置WDS桥接成功,上不了网怎么办?路由器WDS无线桥接设置正确方法
- 使用pathogen安装vim插件nerdtreee
- JVM调优之参数配置: -Xms -Xmx -Xmn -XX:+PrintGCDetails -XX:UseSerialGC -XX:SurvivorRadio -XX:NewRadio
- 计算机新生导论感言,大学生感言与寄语新生
- 魅族新系统android o,魅族最新系统 Flyme 1.0 for M9 正式版 基于Android 4.0