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(召唤前端)相关推荐

  1. 从LSM Tree COLA Tree谈到StackOverflow OSQA

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 从LSM ...

  2. 从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA

    从LSM-Tree.COLA-Tree谈到StackOverflow.OSQA 作者:July,chx/@罗勍 出处:结构之法算法之道blog 导读 本文重点谈了4个东西,LSM-Tree及COLA- ...

  3. [转]从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA

    来源:http://blog.csdn.net/v_july_v/article/details/7526689 作者:July,chx/@罗勍 导读 本文重点谈了4个东西,LSM-Tree及COLA ...

  4. 转帖: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 ...

  5. # tree bash: tree: 未找到命令...

    今天使用CentOS7想查看tree,现象如下: [root@localhost 桌面]# tree bash: tree: 未找到命令- 显示找不到命令,后来发现原因是部分linux系统没有tree ...

  6. [置顶]B-tree/B+tree/B*tree [转]

    (原文出处: http://blog.csdn.net/hbhhww/article/details/8206846) B~树 1.前言: 动态查找树主要有:二叉查找树(Binary Search T ...

  7. 蛋花花谈怎么区分web的前端与后端

    蛋花花谈怎么区分web的前端与后端!据蛋花花了解在web开发中其实分为web前端与后端,那么两者有什么区别呢?下面蛋花花就来给大家介绍一下怎么区分web的前端与后端. 据蛋花花了解web前端分为网页设 ...

  8. LSM(Log-Structured Merge Tree)

    LSM Tree--分布式存储系统(BigTable)的理论模型 一.什么是LSM Tree 二.基本原理简述 2.1 SSTable和Level 2.2 分布式存储系统(BigTable) 2.2. ...

  9. 为什么MyISAM会比Innodb的查询速度快。 btree 和 lsm(hbase) ,cola 树(tokuDB)选型和原理

    父文章 如何成为一名架构师,架构师成长之路_个人渣记录仅为自己搜索用的博客-CSDN博客_架构师成长之路 相关文章 1.8 leveldb vs rocksdb 优劣分析 对 write stalli ...

最新文章

  1. 训练 AI 学会通过复制来构建 AI 系统
  2. PageRank算法--从原理到实现
  3. Boost.Asio技术文档汇总
  4. SAP CRM调查问卷的评分和图表显示功能介绍 1
  5. 舞伴配对问题java_舞伴配对问题
  6. 了解如何解决OSGI捆绑包
  7. python设计与调试[摘自笨方法学python]
  8. 配置IIS Express 7.5以允许外部访问
  9. angularjs绑定属性_AngularJS隔离范围绑定表达式教程
  10. android can为啥能发收不到数据_大数据显示:报读MBA已是未来竞争力提升的必然趋势...
  11. 前端开源项目周报0412
  12. opencv官网下不了了,分享各版本
  13. 基于java高校教师管理系统_高校教师电子业务档案管理系统
  14. 华为U8500使用心得
  15. 理论算法两手抓,UIUC助理教授孙若愚60页长文综述深度学习优化
  16. 设置WDS桥接成功,上不了网怎么办?路由器WDS无线桥接设置正确方法
  17. 使用pathogen安装vim插件nerdtreee
  18. JVM调优之参数配置: -Xms -Xmx -Xmn -XX:+PrintGCDetails -XX:UseSerialGC -XX:SurvivorRadio -XX:NewRadio
  19. 计算机新生导论感言,大学生感言与寄语新生
  20. 魅族新系统android o,魅族最新系统 Flyme 1.0 for M9 正式版 基于Android 4.0

热门文章

  1. 阻塞(Block)和非阻塞(Non-Block)
  2. 初步认识Volatile-总线锁和缓存锁
  3. 完成AOP 顶层设计-CglibAopProxy
  4. 用户中心 - 修改用户信息
  5. 定时任务 - 定时关闭超期未支付订单
  6. 其他类型的链表和线性表的总结(一级)
  7. SpringBoot 上传限制
  8. AbstractQueuedSynchronizer源码解析
  9. oracle 11.2 安装asm,oracle11r2安装asm+rac配置步骤.doc
  10. 在 IntelliJ IDEA 中,如何快速将选中文件用资源管理器打开