`
chenjinlai
  • 浏览: 70012 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

赞美开源,赞美luence贡献的廉价全文搜索解决方案

阅读更多
由于技术大佬的分享和开源社区的贡献,让咱们小企业也能拥有廉价的搜索引擎...

成本可能只是几天,就能有海量数据的快速搜索解决方案...

虽然目前还没推广开,很多disscuz论坛还不能开放全文搜索...不过可以想见这一天会很快到来的

luence是目前最强劲的搜索引擎之一....而且更新快,apache的重点项目,本来是java的,php等其他语言用java不方便...
于是有了solr,这是把luence封装成http接口...每个插入,查询通过xml格式的post,get方法得到...可以给php之类的用...

今天研究了一下基于solr的中文检索解决方案...

1. 把solr压缩包的 example/solr 复制到D:\solr
2. 把solr压缩包的 dist/*.war包 放到tomcat的应用目录webapps,改名为solr.war

3. 在tomcat\conf\Catalina\localhost 目录下部署 solr.xml
内容如下:
<Context docBase="D:/Program Files/Apache Software Foundation/tomcat-solr/Tomcat 6.0/webapps/solr.war" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="D:/solr/solr" override="true" />
</Context>
kk
4. 配置solr/conf/schema.xml里面加上
<fieldType name="text_chinese" class="solr.TextField">
<analyzer class="jeasy.analysis.MMAnalyzer" />
</fieldType>

这个中文切词工具在这里有: http://jesoft.cn ,号称:
kk
分词算法:正向最大匹配 + 词尾多重消歧 + 22万精选词典
分词效率:每秒30万字(测试环境迅驰1.6,第一次分词需要1-2秒加载词典)
内存消耗:30M

5. Tomcat 6.0\conf\server.xml里面加上utf-8编码支持
<Connector port="8080" protocol="HTTP/1.1" maxHttpHeaderSize="8192" URIEncoding="UTF-8"/>

这样已经能搜索出完整的中文词语了,不过还没有分词
kk
solr/example/exampledocs下面运行语句...
java -Durl=http://localhost:8080/solr/update -jar post.jar *.xml
就能把所有xml递交上去...

这是我的field类型,type用于表示资料类型属性,title是题目,content是内容
<field name="id" type="string" indexed="true" stored="true" required="true" />
<field name="type" type="text_chinese" indexed="true" stored="true" omitNorms="true"/>
<field name="title" type="text_chinese" indexed="true" stored="true"/>
<field name="content" type="text_chinese" indexed="true" stored="true"/>
<field name="text" type="text_chinese" indexed="true" stored="false" multiValued="true"/>

kk因为默认搜索text,所以把title和content也加上去

<copyField source="title" dest="text"/>
<copyField source="content" dest="text"/>

然后...搜索了一下效果真好...

下一步是批量生成本地数据库的xml文件,我是这么考虑的

小批量产生文件,递交,再次产生,递交...

ENV["RAILS_ENV"] = "development"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")

global = Article.find(:all,:order=>'id desc',:limit=>1000)



while(1)
f = open('tmp.xml','w')
ss = global[0,50]
puts ss.size
exit if ss.size != 50
global = global[50,global.size]

f.write('<add>')
for a in ss
f.write('<doc>')
f.write '<field name="id">'+a.id.to_s+"</field>\n"
f.write "<field name='type'>article</field>\n"
a.title = '' if !a.title
f.write '<field name="title"><![CDATA['+a.title+"]]></field>\n"
a.description = '' if !a.description
f.write '<field name="content"><![CDATA['+a.description+"]]></field>\n"
f.write('</doc>')
end
f.write('</add>')

f.close

system('run.bat')
end



配到服务器上时候又是一堆问题...

先是8080端口访问不了,后来对比了xml文件发现少了这个
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>

后来可以访问了,页面好像卡死了
查看log java.lang.OutOfMemoryError: Java heap space

在tomcat里面放了512m初始内存

重启tomcat就好了...这个内存问题以后可能还是个麻烦事...

....中间一番折腾

最后终于跑起来了...

不过没估计到文章太多,本来是全部读取...差点没搞死机器...
后来改成一次性读取id,然后小批量通过id去读取文章生成xml文件,递交...

恩,接下来就是和网站的对接...


--------------
chenjinlai
2008-03-07
分享到:
评论
1 楼 niule 2008-10-23  
你好,我是按照步骤来部署的,也是用的jeasy的分词
在analyze里已经可以分词了,但是在query的时候,还是没有分词,

比如索引里有“中文分词终于”这句,我查询“中文终于”的时候,在query中是没有分词,得不到结果
请问是哪里没有配置正确呢,谢了

相关推荐

    Luence.net搜索小程序

    首先,Luence.net是Apache Lucene项目的一个.NET版本,Lucene作为业界知名的全文搜索引擎库,以其开源、高性能而广受好评。Luence.net则继承了Lucene的优点,并针对.NET环境进行了优化,提供了易于使用的.NET API,...

    luence客户端测试软件luke

    1. **Apache Lucene**:Lucene是一个开源的全文检索库,提供强大的搜索功能。它实现了索引、搜索、高亮显示搜索结果等核心功能,并为开发者提供了丰富的API。 2. **Luke工具**:Luke是用于查看、操作和测试Lucene...

    Luence搜索Demo

    《Luence搜索Demo详解》 在信息技术领域,搜索引擎已经成为数据检索不可或缺的一部分,而Luence作为一款高性能、可扩展的全文搜索引擎库,深受开发者喜爱。本文将深入探讨基于.NET平台的Luence.Net搜索Demo,帮助...

    Luence和ElasticSearch面试准备.docx

    Lucene和ElasticSearch是两个在全文搜索引擎领域中广泛使用的开源工具。Lucene是一个高性能、全文本搜索库,而Elasticsearch则是在Lucene的基础上构建的一个分布式、RESTful风格的搜索和数据分析引擎。两者在面试中...

    IKAnalyzer和luence压缩包大全

    总的来说,这个压缩包提供了从分词工具到全文检索框架的一整套解决方案,对于搭建和优化中文搜索引擎有着重要的价值。无论是开发新的搜索应用,还是改进现有系统的性能,这些资源都将发挥关键作用。通过IKAnalyzer和...

    luence搜索

    它提供了一套高效、灵活的文本搜索解决方案,使得开发者能够快速地在大量数据中实现高效的全文检索功能。本文将深入探讨Lucene的工作原理、主要组件以及如何在实际应用中使用它。 一、Lucene核心概念 1. 文档...

    前后端分离的使用spring Mvc、 mybatis、 luence、 spring 开发的开源知识库系统的所有后端端源码

    再者,Lucene是一个全文搜索引擎库,由Apache软件基金会开发。它为开发者提供了构建高性能、可扩展的搜索功能的能力。在本系统中,Lucene可能被用来实现对知识库内容的快速检索和高相关性的搜索结果。通过索引和分析...

    基于lucene和nutch的开源搜索引擎资料集合

    其中内容均为前段时间研究开源搜索引擎时搜集参考的资料,非常齐全包含的内容有: Computing PageRank Using Hadoop.ppt Google的秘密PageRank彻底解说中文版.doc JAVA_Lucene_in_Action教程完整版.doc Java开源搜索...

    前后端分离项目使用的spring Mvc、 mybatis、 luence、 spring 开发的开源知识库系统的所有后端端源码.zip

    前后端分离项目使用的spring Mvc、 mybatis、 luence、 spring 开发的开源知识库系统的所有后端端源码。 下载可运行。 使用前后端分离架构, 使用springMvc 、 spring、 mybatis、 luence等技术开发的开源知识库所有...

    Luence原理及源码分析

    lucene 原理与分析,底层源码解析,应用场景及实践,相关配置

    luence4.6例子

    Apache Lucene 是一个开源的全文检索库,由Java编写,为开发者提供了强大的文本搜索功能。在深入理解Lucene 4.6的源代码之前,我们首先需要了解全文搜索引擎的基本原理。全文搜索引擎通过索引文档中的关键词来实现...

    基于ajax与luence构建搜索引擎的设计和实现论文.doc

    Lucene 是一种基于 Java 的开源信息检索库,提供了一种高效、可扩展的搜索引擎解决方案。Lucene 的主要功能包括:索引创建、索引搜索、索引维护等。Lucene 的优点包括:高效的搜索速度、高度的可扩展性和灵活性等。 ...

    获取全部Luence数据

    ### 获取全部Luence数据 #### 知识点详解 **Lucene** 是一个高性能、全功能的文本搜索引擎库。在本文档中,我们将探讨如何通过Lucene获取索引中的所有文档,包括创建索引、查询索引以及遍历所有文档的具体步骤。 ...

    Luence in Action 中英文pdf 版

    10. **问题解决与调试**:书中还会提供一些常见问题的解决方案,帮助开发者在遇到困难时找到应对策略。 通过阅读《Lucene in Action》的中英文版,无论是初学者还是有经验的开发者,都能深入理解Lucene的工作原理,...

    Luence简单实例

    在Java应用中集成Lucene,能够快速为应用程序添加全文搜索引擎,使得用户可以通过关键词对海量数据进行高效的查找。 **Lucene的基本工作流程** 1. **索引文档**: Lucene首先需要将要搜索的数据转换成索引结构。这...

    IKAnalyzer开源轻量级中文分词工具包2012u6

    最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK...

    Luence+Ikanalyzer+stopword+dic

    在搜索引擎和信息检索领域,Lucene是一个非常重要的开源全文搜索引擎库。它提供了高效的文本索引和搜索功能,被广泛应用于各种信息系统的后台。在Lucene中,为了提高搜索的准确性和效率,通常会使用到一些优化技术,...

    Luence的与盘古分词的使用软件

    标题中的“Lucene”是一个全文搜索引擎库,常用于构建高效的搜索功能。它是开源的,用Java编写,但在.NET环境中可以通过Lucene.NET实现跨平台。在本案例中,它被用于处理用户输入的句子,可能涉及到索引、搜索和分析...

    luence索引例子

    标题 "luence索引例子" 暗示我们要探讨的是Lucene,一个广泛使用的全文搜索引擎库,它在处理大量文本数据时提供了高效的检索能力。在这个例子中,我们将深入理解如何利用Lucene创建索引来优化数据库记录的搜索性能。...

Global site tag (gtag.js) - Google Analytics