`
linliangyi2007
  • 浏览: 1012476 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

来自开源支持者的第一笔捐赠

 
阅读更多
2013年1月9号,一个平凡而又不平常的日子!

IK中文分词开源项目在历经六个年头的发展,迈入第七个年头时,迎来的它的第一笔捐赠!

感谢来自广州的热心支持者Andy!!!作为一名开源项目的个人用户及捐赠者,您的慷慨善举

对于IK,甚至对于广大的国内开源项目的发起者而言,都是莫大的肯定与鼓舞!!

笔者本人并不清楚国内(个人发起的)开源项目中有多少是已经得到捐赠的。国内的开源用户

群体中,又有多少是曾经给予过您使用的开源项目以捐赠的。

写这个博客的目的就是在告诉大家,我们为之期待和努力的开源社区氛围正在形成,一切都在

悄然改变。有志于开源的兄弟姐妹们,行动起来吧!!不论你们是用户,还是项目发起者,你

们的每一点支持和付出,终将积沙成塔,积水成海!!

也许在不久的将来,我们就能看到一个生机勃勃的春天.....


12
7
分享到:
评论
17 楼 majiedota 2015-07-01  
加油
16 楼 gibberish2 2014-12-15  
我特意进来赞一下作者!
15 楼 亦梦亦真 2013-10-17  
发现一个很奇怪的问题,当我需要给一个文件名进行分词时,如果是“测试文件.rar”时,它会分成 测试 文件 .rar  但是如果是英文的“test.rar" 则不会分词,这个结果依然是test.rar  这是为什么呢?是IK分词的问题还是本身lucene的问题呢?
14 楼 rubricate 2013-07-10  
rubricate 写道
你好,感谢你的贡献,我对你的分词做了修改,是它支持了分词后的汉字转换成拼音和首字母,介绍在这里http://blog.csdn.net/liugang51096557/article/d[url]etails/9291331 

http://blog.csdn.net/liugang51096557/article/details/9291331
13 楼 rubricate 2013-07-10  
你好,感谢你的贡献,我对你的分词做了修改,是它支持了分词后的汉字转换成拼音和首字母,介绍在这里http://blog.csdn.net/liugang51096557/article/details/9291331 
12 楼 dandongsoft 2013-06-18  
solr in action 这本书有中文的吗
11 楼 淫笑琪 2013-06-14  
6年过去了。。才一笔捐赠,连50都达不到吧。。这是讽刺嘛?
10 楼 biy 2013-05-10  
恭喜!~~
9 楼 dandongsoft 2013-03-08  
TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs TopDocs
8 楼 Iloseyou 2013-01-28  
林老师 提前祝你和家人新年快乐
7 楼 linliangyi2007 2013-01-11  
snakeling 写道
给你反馈个bug(已修复)
这两天为了搞定这个bug我把lucene4.0的analyzer接口文档全看了一遍……
精确短语检索在现有版本上一直不能用,因为你接口没掉对。
现在将IKTokenizer改为以下模样精确短语检索就能用了。
/**
 * IK 中文分词  版本 5.0.1
 * IK Analyzer release 5.0.1
 * 
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * 源代码由林良益(linliangyi2005@gmail.com)提供
 * 版权声明 2012,乌龙茶工作室
 * provided by Linliangyi and copyright 2012 by Oolong studio
 * 

 * 
 */
package org.wltea.analyzer.lucene;

import java.io.IOException;
import java.io.Reader;

import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionLengthAttribute;
import org.apache.lucene.analysis.tokenattributes.TypeAttribute;

import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

/**
 * IK分词器 Lucene Tokenizer适配器类
 * 兼容Lucene 4.0版本
 */
public final class IKTokenizer extends Tokenizer {
	
	//IK分词器实现
	private IKSegmenter _IKImplement;
	
	//词元文本属性
	private final CharTermAttribute termAtt;
	//词元位移属性
	private final OffsetAttribute offsetAtt;
	//词元分类属性(该属性分类参考org.wltea.analyzer.core.Lexeme中的分类常量)
	private final TypeAttribute typeAtt;
	//记录最后一个词元的结束位置
	private int endPosition;
	//设置term跨position范围,用于短语检索 ——by snakeling
	private final PositionLengthAttribute posLenAtt;
	//这是position用于lucene短语检索 ——by snakeling
	private final PositionIncrementAttribute posIncAtt;
	//上一个词的开始位置 ——by snakeling
	private int lastBeginePosition;
	//第一个term要特殊处理
	private boolean bFirstTerm;
	/**
	 * Lucene 4.0 Tokenizer适配器类构造函数
	 * @param in
	 * @param useSmart
	 */
	public IKTokenizer(Reader in , boolean useSmart){
	    super(in);
	    offsetAtt = addAttribute(OffsetAttribute.class);
	    termAtt = addAttribute(CharTermAttribute.class);
	    typeAtt = addAttribute(TypeAttribute.class);
	    posLenAtt = addAttribute(PositionLengthAttribute.class);
	    posIncAtt = addAttribute(PositionIncrementAttribute.class);
		_IKImplement = new IKSegmenter(input , useSmart);
	}

	/* (non-Javadoc)
	 * @see org.apache.lucene.analysis.TokenStream#incrementToken()
	 */
	@Override
	public boolean incrementToken() throws IOException {
		//清除所有的词元属性
		clearAttributes();
		Lexeme nextLexeme = _IKImplement.next();
		if(nextLexeme != null){
			//将Lexeme转成Attributes
			//设置词元文本
			termAtt.append(nextLexeme.getLexemeText());
			//设置词元长度
			termAtt.setLength(nextLexeme.getLength());
			//设置词元位移-----几乎没用,lucene默认配置不保存offset。——by snakeling
			offsetAtt.setOffset(nextLexeme.getBeginPosition(), nextLexeme.getEndPosition());
			//记录分词的最后位置
			endPosition = nextLexeme.getEndPosition();
			//记录词元分类
			typeAtt.setType(nextLexeme.getLexemeTypeString());			
			//配置term的position信息,这个才是拿来做短语检索的,上面那个offset几乎没用,lucene默认配置不保存offset。 ——by snakeling
			if(bFirstTerm){
				posIncAtt.setPositionIncrement(1);
				posLenAtt.setPositionLength(nextLexeme.getLength());
				bFirstTerm = false;
			}else{
				posIncAtt.setPositionIncrement(nextLexeme.getBeginPosition() - lastBeginePosition);
				posLenAtt.setPositionLength(nextLexeme.getLength());
			}
			lastBeginePosition = nextLexeme.getBeginPosition();
			//返会true告知还有下个词元
			return true;
		}
		//返会false告知词元输出完毕
		return false;
	}
	
	/*
	 * (non-Javadoc)
	 * @see org.apache.lucene.analysis.Tokenizer#reset(java.io.Reader)
	 */
	@Override
	public void reset() throws IOException {
		super.reset();
		_IKImplement.reset(input);
		bFirstTerm = true;  //——by snakeling
		lastBeginePosition = 0;  //——by snakeling
	}	
	
	@Override
	public final void end() {
	    // set final offset
		int finalOffset = correctOffset(this.endPosition);
		offsetAtt.setOffset(finalOffset, finalOffset);
	}
}





非常感谢,你反馈的问题。我会将您的代码加入下个版本的发布包!!感谢对IK的支持
6 楼 linliangyi2007 2013-01-11  
remoteJavaSky 写道
这个让人兴奋哈
如果我用到国内开源项目,觉得不错,我会donate的,当然支付宝最好,我没其它在线支付了


是的,Andy就是通过支付宝账号(linliangyi2005@gmail.com)捐赠的,哈哈
5 楼 sharewind 2013-01-10  
恭喜恭喜!
4 楼 snakeling 2013-01-10  
有问题可以练习我~
snakedling@gmail.com
3 楼 snakeling 2013-01-10  
给你反馈个bug(已修复)
这两天为了搞定这个bug我把lucene4.0的analyzer接口文档全看了一遍……
精确短语检索在现有版本上一直不能用,因为你接口没掉对。
现在将IKTokenizer改为以下模样精确短语检索就能用了。
/**
 * IK 中文分词  版本 5.0.1
 * IK Analyzer release 5.0.1
 * 
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * 源代码由林良益(linliangyi2005@gmail.com)提供
 * 版权声明 2012,乌龙茶工作室
 * provided by Linliangyi and copyright 2012 by Oolong studio
 * 

 * 
 */
package org.wltea.analyzer.lucene;

import java.io.IOException;
import java.io.Reader;

import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionLengthAttribute;
import org.apache.lucene.analysis.tokenattributes.TypeAttribute;

import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

/**
 * IK分词器 Lucene Tokenizer适配器类
 * 兼容Lucene 4.0版本
 */
public final class IKTokenizer extends Tokenizer {
	
	//IK分词器实现
	private IKSegmenter _IKImplement;
	
	//词元文本属性
	private final CharTermAttribute termAtt;
	//词元位移属性
	private final OffsetAttribute offsetAtt;
	//词元分类属性(该属性分类参考org.wltea.analyzer.core.Lexeme中的分类常量)
	private final TypeAttribute typeAtt;
	//记录最后一个词元的结束位置
	private int endPosition;
	//设置term跨position范围,用于短语检索 ——by snakeling
	private final PositionLengthAttribute posLenAtt;
	//这是position用于lucene短语检索 ——by snakeling
	private final PositionIncrementAttribute posIncAtt;
	//上一个词的开始位置 ——by snakeling
	private int lastBeginePosition;
	//第一个term要特殊处理
	private boolean bFirstTerm;
	/**
	 * Lucene 4.0 Tokenizer适配器类构造函数
	 * @param in
	 * @param useSmart
	 */
	public IKTokenizer(Reader in , boolean useSmart){
	    super(in);
	    offsetAtt = addAttribute(OffsetAttribute.class);
	    termAtt = addAttribute(CharTermAttribute.class);
	    typeAtt = addAttribute(TypeAttribute.class);
	    posLenAtt = addAttribute(PositionLengthAttribute.class);
	    posIncAtt = addAttribute(PositionIncrementAttribute.class);
		_IKImplement = new IKSegmenter(input , useSmart);
	}

	/* (non-Javadoc)
	 * @see org.apache.lucene.analysis.TokenStream#incrementToken()
	 */
	@Override
	public boolean incrementToken() throws IOException {
		//清除所有的词元属性
		clearAttributes();
		Lexeme nextLexeme = _IKImplement.next();
		if(nextLexeme != null){
			//将Lexeme转成Attributes
			//设置词元文本
			termAtt.append(nextLexeme.getLexemeText());
			//设置词元长度
			termAtt.setLength(nextLexeme.getLength());
			//设置词元位移-----几乎没用,lucene默认配置不保存offset。——by snakeling
			offsetAtt.setOffset(nextLexeme.getBeginPosition(), nextLexeme.getEndPosition());
			//记录分词的最后位置
			endPosition = nextLexeme.getEndPosition();
			//记录词元分类
			typeAtt.setType(nextLexeme.getLexemeTypeString());			
			//配置term的position信息,这个才是拿来做短语检索的,上面那个offset几乎没用,lucene默认配置不保存offset。 ——by snakeling
			if(bFirstTerm){
				posIncAtt.setPositionIncrement(1);
				posLenAtt.setPositionLength(nextLexeme.getLength());
				bFirstTerm = false;
			}else{
				posIncAtt.setPositionIncrement(nextLexeme.getBeginPosition() - lastBeginePosition);
				posLenAtt.setPositionLength(nextLexeme.getLength());
			}
			lastBeginePosition = nextLexeme.getBeginPosition();
			//返会true告知还有下个词元
			return true;
		}
		//返会false告知词元输出完毕
		return false;
	}
	
	/*
	 * (non-Javadoc)
	 * @see org.apache.lucene.analysis.Tokenizer#reset(java.io.Reader)
	 */
	@Override
	public void reset() throws IOException {
		super.reset();
		_IKImplement.reset(input);
		bFirstTerm = true;  //——by snakeling
		lastBeginePosition = 0;  //——by snakeling
	}	
	
	@Override
	public final void end() {
	    // set final offset
		int finalOffset = correctOffset(this.endPosition);
		offsetAtt.setOffset(finalOffset, finalOffset);
	}
}


2 楼 whiletrue 2013-01-10  
恭喜恭喜!
1 楼 remoteJavaSky 2013-01-10  
这个让人兴奋哈
如果我用到国内开源项目,觉得不错,我会donate的,当然支付宝最好,我没其它在线支付了

相关推荐

    OPENBOOK开源杂志2014第七期.pdf

    根据提供的信息来看,这份文档似乎来自《OPENBOOK》开源杂志2014年的第七期,主要涉及的内容包括杂志团队介绍、捐赠支持、职位招募、合作伙伴、硬件漂流项目以及广告和比赛展示等内容。接下来,我们将围绕这些核心...

    OSTC开源技术大会-罗聪翼-blender开源电影

    《ElephantDream/大象之梦》是世界上第一部开源电影,创新的推广方式不仅为Blender社区吸引了大量的粉丝,也赢得了社会支持。《BigBuckBunny/大雄兔》是为了推动毛发和动画工具的开发而进行的电影项目,而《Sintel/...

    基于PHP的NGOOS极益开源公益平台.zip

    4. **捐赠处理**:支持在线捐款,可能集成第三方支付网关如PayPal或Alipay,确保捐赠流程安全透明,并提供捐赠记录查询。 5. **活动发布与管理**:组织可以发布和管理各类公益活动,如义工服务、筹款活动等,用户...

    基于springboot+Web的校园爱心捐赠互助管理系统源码数据库论文.docx

    3. 在线捐赠:系统支持直接的在线捐赠,捐赠者可以选择向特定的贫困生或项目捐款,资金管理功能确保捐赠款项的安全流转。 4. 校内求助:遇到困难的学生可以在平台上发布求助信息,获取其他人的帮助,形成互助的良好...

    Please remove it-开源

    - 支持和维护:开源项目可能缺乏足够的技术支持,用户需依赖社区或第三方服务商。 - 法律问题:使用开源软件时需确保符合许可证规定,避免侵犯版权。 5. **开源文化** - 社区驱动:开源项目往往由热情的开发者...

    Easy Paypal Module-开源

    无论你是经营在线商店、提供订阅服务,还是希望接受来自全球的支持者的捐赠,Easy Paypal Module都能成为你实现目标的有效工具。 总的来说,Easy Paypal Module作为一款开源的Mambo和Joomla模块,通过简化Paypal的...

    Python-liberapaycom通用捐助平台

    Liberapay.com是一个开源的、基于Python的在线捐助平台,致力于为开源项目和个人创作者提供一种可持续的资金支持方式。它允许用户定期向他们支持的项目或个人捐赠,以此鼓励并保障开源社区的持续发展。 1. **Python...

    NetworX-Non-Profit, Social Community-开源

    这个系统让非营利组织能够在其自定义品牌的网站上接受来自支持者的捐赠。用户界面友好,操作流程简洁,使得捐款过程变得更加便捷,有利于提高捐款转化率。此外,该软件可能还支持多种支付方式,如信用卡、PayPal或...

    CiviCRM:发展和维持关系-开源

    它的核心目标是帮助这些组织更好地发展和维持与他们的支持者、志愿者、会员以及其他利益相关者的关系。CiviCRM 的开源特性意味着它允许用户免费下载并根据自己的需求进行定制,同时也鼓励社区参与开发和改进。 ...

    urmusic5:免费和开源的音乐可视化工具-开源

    urmusic5是一款专为音乐爱好者和创意人士设计的免费、开源软件,它提供了强大的音乐可视化功能,让用户可以自由地创作出独特的音乐视频。这款软件的核心特性在于其高效能的硬件加速渲染技术,确保了即使在处理复杂的...

    connect5D-开源

    在提供的压缩包文件"donorsvc_1.0.0_lib"中,我们可以推测这是一个版本为1.0.0的服务库,可能是connect5D项目的一部分,用于捐赠或支持其他服务的实现。"svc"可能代表"Service",暗示这是一组服务接口或实现,用于与...

    together:非政府组织的开源响应模板

    "v1 测试版"表明这是该模板的第一个测试版本,用户在使用时可能会遇到一些bug,但同时也意味着它提供了初步的功能和设计框架,供用户试用和提供反馈。 开源意味着该模板的源代码是公开的,任何个人或团体都可以查看...

    Android代码-MyBookshelf

    本软件为开源软件,没有上架Google Play,没有在任何地方售卖,如果想支持我请通过软件里的捐赠,不要在任何地方购买! 关注公众号请搜索:开源阅读软件,有福利噢 blog http://www.hostfans.cn 开发 本项目Fork于 ...

    Eclipse 中文教程 清晰版

    - **IBM的贡献**:Eclipse最初由IBM投资4千万美元开发而成,第一版发布于2001年11月。 - **开源项目**:Eclipse成为了一个开源项目,虽然大部分开发工作仍然由IBM主导,但也有一部分工作由eclipse.org下的软件联盟...

    gr9:gitcoin赠款第9轮参与

    第9轮Gitcoin赠款(GR9)是一个持续的活动,旨在促进开源生态系统的繁荣,并鼓励更多的人参与到这个领域。 在Gitcoin赠款的每一轮中,项目方可以申请资金,社区成员则通过捐赠来支持他们感兴趣的项目。这些项目可能...

    Linux走到“非商业”十字路口.pdf

    在这个过程中,商业化的支持、培训、市场理解、第三方软件生态以及公司的责任感都成为关键因素。 最近Evans Data Corporation的一项研究显示,开发者开始倾向于非商业的Linux版本。这标志着开源社区的力量正在增长...

    brave-browser,下一代勇敢的MacOS、Windows、Linux浏览器,最终是Android浏览器.zip

    "Brave浏览器"是一款由Brendan Eich(JavaScript的创造者)和Brian Bondy共同创立的公司Brave Software开发的开源网络浏览器。这款浏览器以其高效、隐私保护和广告拦截功能而闻名,旨在提供更快、更安全的浏览体验。...

    慢谈Eclipse

    Eclipse作为一个开源的集成开发环境(IDE),自2001年由IBM捐赠给开源社区以来,迅速成为了全球范围内广泛使用的开发工具之一。Eclipse不仅仅局限于Java开发,通过其高度可扩展性的架构,能够支持多种编程语言和开发...

Global site tag (gtag.js) - Google Analytics