请教个关于 solr 索引构建的方案的问题,怎么操作比较适合正式环境?

从前 发布于 2013/03/27 17:16
阅读 2K+
收藏 0

    最近搭建一个全文检索平台。最初考虑只采用lucene,然后自己写索引构建程序、检索框架等,类似osc @红薯 的方案,以前也做过比较熟悉。但有两个问题,1.比较复杂,工作量和维护量都比较大。2. 检索会有一定的延时。

    看了看Solr决定采用solr,可以节省很大一部分开发时间。但有几个问题想请教下 osc 里的全文检索高手,希望大家不吝赐教:

    1.第一种方案,solr配置数据库,自动处理建索引。这样会不会延时很大,无法做到实时检索?

    2.第二种方案,通过solrj客户端在应用端 处理建索引问题,比如在发布一篇文章的时候,通过http 提交到solr 服务端上同时建索引,这样能不能达到实时检索?而且同时这个时候 应用端也会通过 http 检索 solr, 建索引检索同时进行,这样访问量大的时候会不会导致 内存泄露、索引文件磁盘I/O负载不了的问题?

有经验的同学能不能讨论下?那种方案较好点,对实时性要求高点。或者配置上怎么优化?

当然这个项目是企业内部应用,访问量不会太大,服务器资源有限,所以无法用到solr的分布式特性,比如索引复制、多核来解决这些问题。而且由于可能会部署在 windows下,排除了以前做过的sphinx、nlpbamboo 基于Postgresql数据库的方案。


加载中
0
羅立安的眼光
羅立安的眼光
一般不都是把dao拦截一下扔到服务器上去分词么。应该是实时的吧。当然你把数据扔给服务器,服务器要先分词,然后建索引,这两个步骤肯定需要一些就时间,但是也不是太久。你特别在意这点时间么   
羅立安的眼光
羅立安的眼光
回复 @从前 : 服务器可以在同一台机器,也可以在不同的机器上。大数据和并发量没有具体测过不清楚也
从前
从前
哦。这样其实就是 提交数据到数据库的同时,提交数据到solr上创建索引吧。这样确是实时的,检索也在同一个服务器上进行么?不知道这样能支持多大的访问量呢?就是发布数据的人多了,同时又有人检索会不导致检索很慢
羅立安的眼光
羅立安的眼光
回复 @从前 : 我做的都是在dao把save,update和delete三个操作拦截下来,一边生成索引一边操作数据库。这样能保证索引和数据库一致
从前
从前
那倒不是,程序处理时间这个是肯定有的。我是指 solr 程序直接配置数据源为数据库,这种会不会有延时。
0
逝水fox
逝水fox
EmbeddedSolrServer  内嵌式Solr服务器
从前
从前
不知道你对这个方案有没有实际发布过的应用,结果如何呢?
从前
从前
哦,之前考虑过的,但看网上很多人都不建议 这样将solr服务器集成在应用中
0
朱坤朋
朱坤朋

第一个:插入数据库后,需要触发solr的索引动作之后,才能被索引到,所以肯定不是实时的。

第二个:如果企业内部用,量不大的话,提交一篇后立刻commit可以实时索引。保证量小的情况下没问题。

试试多核的,一个A主查询,一个B新增查询,到一定数量后把B合并到A里,清空B

朱坤朋
朱坤朋
@从前 合并没实际用过,看别人说的,貌似只要配置就行。主要B是小索引,commit几乎不怎么影响
从前
从前
嗯。多核这个合并索引可以配置的吧?这样也可以发布数据后立刻commit?
0
朱坤朋
朱坤朋

http://www.myexception.cn/internet/475180.html

1, Solr 合并索引数据有两种方法,第一种是 1.4 版本中引入的,通过 CoreAdminHandler 来实现,示例如下:

http://localhost:8983/solr/admin/cores?action=mergeindexes&core=core0&indexDir=/opt/solr/core1/data/index&indexDir=/opt/solr/core2/data/index

  第二种方法是 Solr3.3 中引入的,也是通过 CoreAdminHandler 来实现,示例如下:

http://localhost:8983/solr/admin/cores?action=mergeindexes&core=core0&srcCore=core1&srcCore=core2

从前
从前
嗯。我看看,目前先考虑发布时commit建索引,再测下配置数据库自动建索引,实在不行只有配置下多核,读写分离?
返回顶部
顶部