- 浏览: 203141 次
- 性别:
- 来自: 北京
最新评论
-
毛毛虫小白:
您好,这里说的基于角色标注就是用到了字体位频率表里,在“名字内 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词 -
assasszt:
请问 能不能加入写入文件功能,不然的话 是每次 执行 都是一个 ...
Java版本的BloomFilter (布隆过滤器) -
lhj_6270:
楼主不错。果然不是一般人。再接再厉弄个软件出来。
Java版本的BloomFilter (布隆过滤器) -
ansjsun:
fncj 写道你好,我们最近要搞一个人名识别功能,发现有两个问 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词 -
fncj:
你好,我们最近要搞一个人名识别功能,发现有两个问题:1、里有不 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词
package org.apache.lucene.demo; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.NumericField; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.Searcher; import org.apache.lucene.search.Sort; import org.apache.lucene.search.SortField; import org.apache.lucene.search.TopDocs; import org.apache.lucene.store.Directory; import org.apache.lucene.store.LockObtainFailedException; import org.apache.lucene.store.RAMDirectory; import org.apache.lucene.util.Version; public class Test { public static void main(String[] args) throws CorruptIndexException, LockObtainFailedException, IOException, ParseException { List<PoJo> all = getList(); Directory directory = new RAMDirectory(); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT); IndexWriter indexWriter = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.LIMITED); Document document = null; Iterator<PoJo> it = all.iterator(); PoJo pojo = null; while (it.hasNext()) { pojo = it.next(); document = new Document(); document.add(new NumericField("id", Field.Store.YES, true) .setIntValue(pojo.getId())); document.add(new Field("name", pojo.getName(), Field.Store.YES, Field.Index.ANALYZED)); document.add((new NumericField("order", Field.Store.YES, true) .setIntValue(pojo.getOrder()))); indexWriter.addDocument(document); } indexWriter.optimize(); indexWriter.close(); IndexReader reader = IndexReader.open(directory, true); Searcher searcher = new IndexSearcher(reader); Sort sort = new Sort() ; sort.setSort(new SortField("order", SortField.INT ,true)) ; QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "name", analyzer); Query query = parser.parse("ZB"); TopDocs results = searcher.search(query, null, 2000, sort); for (int i = 0; i < results.scoreDocs.length; i++) { Document doc = searcher.doc(results.scoreDocs[i].doc); System.out.println(doc.get("id") + " " + doc.get("name") + " " + doc.get("order")); } } public static List<PoJo> getList() { List<PoJo> all = new ArrayList<PoJo>(); for (int i = 1; i < 2000; i++) { String name = getName(i); all.add(new PoJo(i, name + " " + new Random().nextInt(1000), new Random().nextInt(1000))); } return all; } public static String getName(int i) { String name = null; switch (i % 5) { case 0: name = "HB"; break; case 1: name = "XJ"; break; case 2: name = "XZ"; break; case 3: name = "BJ"; break; case 4: name = "ZB"; break; default: name = "LJ"; } return name; } } class PoJo { private int id; private String name; private int order; public PoJo(int id, String name, int order) { this.id = id; this.name = name; this.order = order; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getOrder() { return order; } public void setOrder(int order) { this.order = order; } }
评论
4 楼
cf2huihui
2013-10-15
ansjsun 写道
cf2huihui 写道
你好,我用两个域进行排序,结果跟目标不一样。用两个域排序的话,只有第一个sortfield起作用,第二个不起作用,但是我单独分开一个一个排序的话,就有效果,你知道是为什么吗?
SortField[] sortArray; sortArray = new SortField[] {new SortField("memberType", SortField.Type.INT,true), new SortField("createdDate", SortField.Type.LONG,true)}; topDocs = searcher.search(bQuery,20,new Sort(sortArray));
第一个如果相同才按照第二个排序
你好,问题解决了,我后来好好想想发现原因了。我用两个域排序,一个是产品的创建时间,一个是产品的等级,前者是Timestamp类型的,后者是int类型的,数据库查询结果自动给bean赋值,所以两者的数据类型都对。但是,lucene在建立索引的时候,是把数据类型转化为string,所以 问题出现了,既然在lucene中是string ,那么我在SortField中的SortField.type写成long 对于产品的创建时间在索引中是string类型的来说,是无效的,但是昨天测试的时候有时候有效,有时候很混乱,导致我没有发现这个问题。发现之后,就可以解决了,
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date createDate = null ; try { createDate = formatter.parse(value); } catch (ParseException e) { e.printStackTrace(); } Long dateLong = createDate.getTime(); String fieldValue =String.valueOf(dateLong); // System.out.println("createdDate:"+value); doc.add(new Field("createdDate",fieldValue,fieldType));
把string转化为时间类型,再转化为long型,然后转化为string保存,在textfield中按照long排序即可。
好了,说完了,但是觉得很麻烦,问下大神有没有简单点的方法?
3 楼
ansjsun
2013-10-14
cf2huihui 写道
你好,我用两个域进行排序,结果跟目标不一样。用两个域排序的话,只有第一个sortfield起作用,第二个不起作用,但是我单独分开一个一个排序的话,就有效果,你知道是为什么吗?
SortField[] sortArray; sortArray = new SortField[] {new SortField("memberType", SortField.Type.INT,true), new SortField("createdDate", SortField.Type.LONG,true)}; topDocs = searcher.search(bQuery,20,new Sort(sortArray));
第一个如果相同才按照第二个排序
2 楼
cf2huihui
2013-10-14
对了,我用的lucene版本是4.1
1 楼
cf2huihui
2013-10-14
你好,我用两个域进行排序,结果跟目标不一样。用两个域排序的话,只有第一个sortfield起作用,第二个不起作用,但是我单独分开一个一个排序的话,就有效果,你知道是为什么吗?
SortField[] sortArray; sortArray = new SortField[] {new SortField("memberType", SortField.Type.INT,true), new SortField("createdDate", SortField.Type.LONG,true)}; topDocs = searcher.search(bQuery,20,new Sort(sortArray));
发表评论
-
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词
2012-09-14 13:35 7213大家好.最近在做分词.在分词中遇到了各种各样的问题 ... -
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词
2012-09-14 13:04 13大家好.最近在做分词.在分词中遇到了各种各样的问题 ... -
Combining Probabilities-结合概率
2012-04-19 14:23 0这就是联合概率的计算公式 介绍..原文 htt ... -
贝叶斯学习笔记
2012-04-19 11:21 1617一.什么是贝叶斯 ... -
大话字符编码发展史
2012-04-06 17:17 3760ASCII码 ASCII码于1968年提出,用于在不同计 ... -
新浪微博采集利用javascript爬取
2012-02-16 16:17 85在一个群里有人问新浪微博的抓取. 因为需求特殊..试了一次通 ... -
元宵爬虫-YuanXiaoSpider
2012-02-06 12:25 4569翻译了下..没有元宵的淫文啊....所以用PinYing吧.. ... -
到1亿的自然数,求所有数的拆分后的数字之和
2012-02-02 16:57 2116public static void main(String[ ... -
<<这就是搜索引擎>>学习笔记-算法之索引压缩
2012-01-19 16:20 2323前一段时间.在微博上中奖了. 一个叫张俊林的帅锅.送了俺一本书 ... -
文本相似度计算-Levenshtein
2012-01-13 11:26 2028参见网址http://www.merriamp ... -
一个不会重复的HelloWord 随机大小写....
2011-12-01 16:53 1220一个不会重复的HelloWord 随机大小写.... 代码没有 ... -
简单版数独计算器-升级版
2011-11-03 12:28 1684只能算初级的..高级的就溢出了 就算内存无穷大.可能性超过 ... -
java算法专题-归并排序
2011-11-02 21:32 1426归并的思想就是分治.时间复杂度..忘记了 大概实现了下..还 ... -
一个关键字标红的通用类
2011-09-15 20:32 3419import java.lang.reflect.Array; ... -
二分法查找
2011-09-13 15:03 1763import java.util.Arrays; / ... -
二叉树法插入查找例子
2011-09-13 14:52 1413二分法查找...查找... 代码比较简单...没有注释了 ... -
java Hash算法大全(转载的)
2011-09-09 00:05 2819/** * Hash算法大全<br> * 推荐 ... -
Java版本的BloomFilter (布隆过滤器)
2011-09-08 17:38 11085哈哈...我终于写了个BloomFilter 这个是干嘛用的 ... -
BitMap 用于查重..只能查数字
2011-09-01 10:26 2585package ansj.sun.util; public ... -
2B高亮.单位要用凑合用吧..自己趁着老婆洗狗的时候写的
2011-08-29 21:12 1421没有用任何算法.没有用 ...
相关推荐
《深入理解Lucene3.0与Paoding-Analysis集成应用》 在信息检索领域,Apache Lucene是一款强大的全文搜索引擎库,被广泛应用于各种信息检索系统。Lucene3.0是其历史版本之一,具备高效、灵活的特点。在这个版本中,...
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的
lucene 3.0 API中文帮助,学习的人懂得的
【Lucene3.0查询类型详解】 在Lucene3.0中,查询处理是一个关键环节,涉及多种查询方式和理论模型。以下是对这些概念的详细解释: 1. **查询方式**: - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较...
赠送jar包:lucene-analyzers-common-6.6.0.jar; 赠送原API文档:lucene-analyzers-common-6.6.0-javadoc.jar; 赠送源代码:lucene-analyzers-common-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-backward-codecs-7.3.1.jar; 赠送原API文档:lucene-backward-codecs-7.3.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-spatial-extras-7.3.1.jar; 赠送原API文档:lucene-spatial-extras-7.3.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
赠送jar包:lucene-spatial-extras-7.2.1.jar; 赠送原API文档:lucene-spatial-extras-7.2.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-spatial-extras-6.6.0.jar; 赠送原API文档:lucene-spatial-extras-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial-extras-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
lucene3.0 中文分词器, 庖丁解牛
赠送jar包:lucene-backward-codecs-7.2.1.jar; 赠送原API文档:lucene-backward-codecs-7.2.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-backward-codecs-6.6.0.jar; 赠送原API文档:lucene-backward-codecs-6.6.0-javadoc.jar; 赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-backward-codecs-6.6.0.jar; 赠送原API文档:lucene-backward-codecs-6.6.0-javadoc.jar; 赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...