- 浏览: 194824 次
文章分类
最新评论
-
code_xiaoke:
session可是有30分钟有效期的还有如果在分布式的环境下 ...
Java Web 用户登陆示例代码 -
xul0038:
http://www.baidu.com
Java Web 用户登陆示例代码 -
16866:
非常棒,配置信息呢
Nginx负载均衡 -
开发小菜:
什么意思,没明白?能不能写一个例子
JS 实现DIV随浏览器窗口大小变化
package cn.zqh.lucene.sort;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.NumberTools;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.RangeFilter;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.highlight.Formatter;
import org.apache.lucene.search.highlight.Fragmenter;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.Scorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
import cn.zqh.lucene.highlight.QueryResult;
/**
zqh
*/
public class TestSort {
String indexPath ="D:\\p\\luceneDemo\\luceneIndex";
Analyzer analyzer = new StandardAnalyzer();
//相关度排序
public QueryResult search(String queryString,int firstResult,int maxResult) throws ParseException, IOException{
IndexSearcher indexSearcher = null;
//方法1.在搜索的时候指定Field的相关值 方法2.创建索引时指定Document的相关值 doc.setBoost();
String[] fields={"name","content"};
Map<String,Float> boots = new HashMap<String,Float>();
boots.put("name", 3f);//boots.put("name", 1f);默认
QueryParser queryParser = new MultiFieldQueryParser(fields,analyzer,boots);
Query query =queryParser.parse(queryString);
//2、进行查询
indexSearcher = new IndexSearcher(indexPath);
Filter filter = null;
TopDocs top =indexSearcher.search(query, filter, 10000);
int recordCount = top.totalHits;
List<Document> recordList = new ArrayList<Document>();
//准备高亮
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>","</font>");
Scorer scorer = new QueryScorer(query);
Highlighter hg = new Highlighter(formatter,scorer);
Fragmenter fragmenter = new SimpleFragmenter(50);
hg.setTextFragmenter(fragmenter);
//3取出当前页的数据
int end = Math.min(firstResult+maxResult,top.totalHits);
for(int i=firstResult;i< end;i++){
ScoreDoc scoreDoc =top.scoreDocs[i];
int docSn =scoreDoc.doc;
Document doc = indexSearcher.doc(docSn);
//返回高亮后的结果,如果当前属性值中没有出现关键字,会返回null
String hc =hg.getBestFragment(analyzer,"content",doc.get("content"));
if(hc ==null){
String content =doc.get("content");
int endIndex = Math.min(50,content.length());
hc = content.substring(0,50);
}
doc.getField("content").setValue(hc);
recordList.add(doc);
}
//返回结果
return new QueryResult(recordCount,recordList);
//indexSearcher.close();
}
//自定义排序
public QueryResult search(Query query,int firstResult,int maxResult) throws ParseException, IOException{
IndexSearcher indexSearcher = null;
indexSearcher = new IndexSearcher(indexPath);
//使用过滤器
Filter filter = new RangeFilter("size", NumberTools.longToString(200), NumberTools.longToString(500), true, true);
//自定义排序
Sort sort = new Sort();
sort.setSort(new SortField("size"));//默认升序
TopDocs top =indexSearcher.search(query, filter, 10000);
int recordCount = top.totalHits;
List<Document> recordList = new ArrayList<Document>();
//准备高亮
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>","</font>");
Scorer scorer = new QueryScorer(query);
Highlighter hg = new Highlighter(formatter,scorer);
Fragmenter fragmenter = new SimpleFragmenter(50);
hg.setTextFragmenter(fragmenter);
//3取出当前页的数据
int end = Math.min(firstResult+maxResult,top.totalHits);
for(int i=firstResult;i< end;i++){
ScoreDoc scoreDoc =top.scoreDocs[i];
int docSn =scoreDoc.doc;
Document doc = indexSearcher.doc(docSn);
//返回高亮后的结果,如果当前属性值中没有出现关键字,会返回null
String hc =hg.getBestFragment(analyzer,"content",doc.get("content"));
if(hc ==null){
String content =doc.get("content");
int endIndex = Math.min(50,content.length());
hc = content.substring(0,50);
}
doc.getField("content").setValue(hc);
recordList.add(doc);
}
//返回结果
return new QueryResult(recordCount,recordList);
//indexSearcher.close();
}
}
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.NumberTools;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.RangeFilter;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.highlight.Formatter;
import org.apache.lucene.search.highlight.Fragmenter;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.Scorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
import cn.zqh.lucene.highlight.QueryResult;
/**
zqh
*/
public class TestSort {
String indexPath ="D:\\p\\luceneDemo\\luceneIndex";
Analyzer analyzer = new StandardAnalyzer();
//相关度排序
public QueryResult search(String queryString,int firstResult,int maxResult) throws ParseException, IOException{
IndexSearcher indexSearcher = null;
//方法1.在搜索的时候指定Field的相关值 方法2.创建索引时指定Document的相关值 doc.setBoost();
String[] fields={"name","content"};
Map<String,Float> boots = new HashMap<String,Float>();
boots.put("name", 3f);//boots.put("name", 1f);默认
QueryParser queryParser = new MultiFieldQueryParser(fields,analyzer,boots);
Query query =queryParser.parse(queryString);
//2、进行查询
indexSearcher = new IndexSearcher(indexPath);
Filter filter = null;
TopDocs top =indexSearcher.search(query, filter, 10000);
int recordCount = top.totalHits;
List<Document> recordList = new ArrayList<Document>();
//准备高亮
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>","</font>");
Scorer scorer = new QueryScorer(query);
Highlighter hg = new Highlighter(formatter,scorer);
Fragmenter fragmenter = new SimpleFragmenter(50);
hg.setTextFragmenter(fragmenter);
//3取出当前页的数据
int end = Math.min(firstResult+maxResult,top.totalHits);
for(int i=firstResult;i< end;i++){
ScoreDoc scoreDoc =top.scoreDocs[i];
int docSn =scoreDoc.doc;
Document doc = indexSearcher.doc(docSn);
//返回高亮后的结果,如果当前属性值中没有出现关键字,会返回null
String hc =hg.getBestFragment(analyzer,"content",doc.get("content"));
if(hc ==null){
String content =doc.get("content");
int endIndex = Math.min(50,content.length());
hc = content.substring(0,50);
}
doc.getField("content").setValue(hc);
recordList.add(doc);
}
//返回结果
return new QueryResult(recordCount,recordList);
//indexSearcher.close();
}
//自定义排序
public QueryResult search(Query query,int firstResult,int maxResult) throws ParseException, IOException{
IndexSearcher indexSearcher = null;
indexSearcher = new IndexSearcher(indexPath);
//使用过滤器
Filter filter = new RangeFilter("size", NumberTools.longToString(200), NumberTools.longToString(500), true, true);
//自定义排序
Sort sort = new Sort();
sort.setSort(new SortField("size"));//默认升序
TopDocs top =indexSearcher.search(query, filter, 10000);
int recordCount = top.totalHits;
List<Document> recordList = new ArrayList<Document>();
//准备高亮
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>","</font>");
Scorer scorer = new QueryScorer(query);
Highlighter hg = new Highlighter(formatter,scorer);
Fragmenter fragmenter = new SimpleFragmenter(50);
hg.setTextFragmenter(fragmenter);
//3取出当前页的数据
int end = Math.min(firstResult+maxResult,top.totalHits);
for(int i=firstResult;i< end;i++){
ScoreDoc scoreDoc =top.scoreDocs[i];
int docSn =scoreDoc.doc;
Document doc = indexSearcher.doc(docSn);
//返回高亮后的结果,如果当前属性值中没有出现关键字,会返回null
String hc =hg.getBestFragment(analyzer,"content",doc.get("content"));
if(hc ==null){
String content =doc.get("content");
int endIndex = Math.min(50,content.length());
hc = content.substring(0,50);
}
doc.getField("content").setValue(hc);
recordList.add(doc);
}
//返回结果
return new QueryResult(recordCount,recordList);
//indexSearcher.close();
}
}
发表评论
-
java实现动态切换上网IP (ADSL拨号上网) java开发
2013-04-24 10:06 1217动态切换IP的实现主是也由Windows的rasdial命令提 ... -
JAVA字符串处理函数
2013-04-12 09:21 1029Java中的字符串也是一连串的字符。但是与许多其他的计算机语 ... -
(转)Lucene打分规则与Similarity模块详解
2013-02-06 14:08 1126搜索排序结果的控制 Lu ... -
Compass将lucene、Spring、Hibernate三者结合
2013-02-01 11:02 1639版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
Lucene3.0详解
2013-02-01 10:57 1339★第一部分:概述 1. 我 ... -
Java Web 用户登陆示例代码
2013-02-01 09:56 57996实现功能: 1、用户登陆、注销 2、利用session记 ... -
Java对数函数及Java对数运算
2013-02-01 09:47 6718Java对数函数的计算方法非常有问题,然而在API中却有惊人 ... -
Lucene为不同字段指定不同分词器(转)
2013-01-31 17:34 3370在lucene使用过程中,如 ... -
域名管理与解析原理 — 《Java邮件开发详解》读书笔记
2013-01-31 14:56 1652一 基本概念 1. 域名:域名是由圆点分开一串单词或缩写组 ... -
优秀的Java工程师需要掌握的10项技能
2013-01-31 14:04 1788编程专业相对于计算机领域其他专业来讲,是一门比较难以修炼的专业 ... -
Web开发入门不得不看
2013-01-28 17:31 994如今,各种互联网的Web ... -
MVC框架的映射和解耦
2013-01-25 21:37 785最近在写一个业务上用到的框架,回想起接触过的一些MVC框架, ... -
JAVA发送EMAIL的例子
2013-07-09 09:44 863import javax.mail.*; ... -
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
2012-11-19 09:55 1336前两天看到了一个中国新闻网,这个网站的搜索form的actio ... -
Lucene多字段搜索
2012-11-19 09:53 927最近在学习Lucene的过程中遇到了需要多域搜索并排序的问题, ... -
Nginx负载均衡
2012-11-16 11:45 7533最近迷上了Nginx,真实麻雀虽小,五脏俱全..功能实在强大. ... -
Lucene相关度排序的调整
2012-11-16 11:38 1675Lucene的搜索结果默认按 ... -
HashSet重复元素判断
2012-10-15 16:37 9093HashSet不能添加重复的元素,当调用add(Object) ... -
JAVA提高教程(2)-认识Set集合之HashSet
2012-10-09 09:44 932集合在Java里面的作用非 ... -
使用solr搭建你的全文检索
2012-09-28 16:34 988Solr 是一个可供企业使用的、基于 Lucene 的开箱即用 ...
相关推荐
NULL 博文链接:https://iamyida.iteye.com/blog/2197839
LUCENE搜索引擎基本工作原理 详细介绍了搜索引擎的工作原理
Lucene Query Tool (lqt) 是... --sort-fields sort fields within document --suppress-names suppress printing of field names --tabular print tabular output (requires --fields with no multivalued fields)
主要介绍lucene建立索引、搜索中sort、query等对象的使用、搜索性能的优化、索引各个文件的主要存储的内容等。
Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在...
5.1. Sort类 14 5.2. SortField类 14 5.3. 指定排序的法则 15 5.3.1. 按照文档的得分降序排序 15 5.3.2. 按文档的内部ID升序排序 15 5.3.3. 按照一个Field来排序 15 5.3.4. 按照多个Field来排序 15 5.3.5. 改变...
paoding-analysis4.3.0.jar,可以配合目前最新的lucene-4.3.0,sort-4.3.0使用,本人亲自测试过,一切正常的奥!
霸屏天下源码java 一个方便的类似技术和服务查找表,可帮助前谷歌员工在现实世界中生存:) 非常欢迎拉取请求。 请不要列出任何机密项目! 有关这些技术中(一些)集成在一起的工作...Elasticsearch、Solr、Lucene 发布
霸屏天下源码java 一个方便的类似技术和服务查找表,可帮助前谷歌员工在现实世界中生存:) 非常欢迎拉取请求。 请不要列出任何机密项目! 有关这些技术中(一些)集成在一起的工作示例,...Elasticsearch、Solr、Lucene
Java_Bubble_Sort Java_ClassLoader Java_Copy_On_Write Java_Exception Java_ExecutorService Java_IO Java_JVM_Monitor Java_Jstat Java_Lambda Java_Memory Java_Node Java_Photo_Base64AndZip Java_Request_Get...
1.2.1 Solr使用Lucene并且进行了扩展 4 1.2.2 Schema(模式) 5 1.2.3 查询 5 1.2.4 核心 5 1.2.5 缓存 5 1.2.6 复制 6 1.2.7 管理接口 6 1.3 Solr服务原理 6 1.3.1 索引 6 1.3.2 搜索 7 1.4 源码结构 8 1.4.1 目录...
使用Lucene实现一个IR系统 功能: 索引:1.创建索引 2.delete index 3.add index 4.update index 搜索: 1.termQuery 2.multiFieldQuery 3.booleanQuery 4.prefixQuery 5.phraseQuery 6.multiPhraseQuery 7....
1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) ...2.1.5. 定义访问控制 ...