- 浏览: 65588 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (121)
- luence (7)
- MoveLuceneRebuild (0)
- ehcache (0)
- memcached (12)
- WeiXin (1)
- hy (0)
- alipay (0)
- Wxap (0)
- 学习笔记 (14)
- java generic (1)
- threadpool (0)
- Awmazon (0)
- com.yulong.businessCache (0)
- com.yulong.util (1)
- com.wxap (0)
- com.yulong.wxshop (0)
- com.alipay (0)
- com.yulong.session (0)
- com.yulong.handler (0)
- kafka (0)
- http://www.cnblogs.com/oubo/archive/2012/02/04/2394646.html (0)
- redis (0)
- MongoDB (2)
- Nginx (1)
- java (10)
- 云搜索 (4)
- Hadoop (1)
- Spring (15)
- Thread (1)
- 博客链接 (0)
- AJAX与CSS (7)
- 项目管理 (1)
- restful架构 (1)
- 多线程 (3)
- Java面试 (6)
- 牛人博客 (2)
- Linux (1)
- java集合 (1)
- Socket与Nio (1)
- SQL开发 (2)
- Spring Boot (3)
- Spring4.1 (4)
- tomcat配置 (1)
- JVM (5)
- Hibernate (1)
- Dubbo (7)
- MQ (2)
- java常见错误 (0)
最新评论
@SuppressWarnings({ "unchecked", "deprecation" })
public static List<Goods> SearchForContent(String indexPath, String keyword, int start, int max,
String orderByField, String orderByType) throws Exception
{
List<Goods> goodsList = new ArrayList<Goods>();
String path = indexPath + "index";
IndexSearcher indexSearcher = new IndexSearcher(path);
IndexSearcher indexSearchers[] = { indexSearcher };
MultiSearcher searcher = new MultiSearcher(indexSearchers);
if (searcher != null)
{
String[] fields = { "saleName", "advertiseWords" };
BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD };
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
keyword = LabelUtil.filter(keyword);
Query query = MultiFieldQueryParser.parse(keyword, fields, clauses, analyzer);
boolean orderby = true;
if ("asc".equalsIgnoreCase(orderByType))
{
orderby = false;
}
SortField sortField = new SortField(orderByField, orderby);
Sort sort = new Sort(sortField);
Hits top = null;
if ("sales".equals(orderByField))
{
top = searcher.search(query);
}
else
{
top = searcher.search(query, sort);
}
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter(LS, LE);
Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));
highlighter.setTextFragmenter(new SimpleFragmenter(100));
if (max > top.length())
max = top.length();
for (int i = start; i < max; i++)
{
Document doc = top.doc(i);
List<Field> list = doc.getFields();
Goods good = new Goods();
for (Field d : list)
{
String filedName = d.name();
String value = d.stringValue();
if ("goodsId".equals(filedName))
{
String goodsId = RequestUtil.VailStr(value, "");
good.setGoods_id(Long.parseLong(goodsId));
}
if ("saleName".equals(filedName))
{
String filterStr = LabelUtil.filter(RequestUtil.VailStr(d.stringValue(), ""));
String highliStr = highlighter.getBestFragment(LuceneContacts.analyzer, d.name(), filterStr);
if (StringUtil.isEmpty(highliStr))
{
good.setSale_name(RequestUtil.VailStr(value, ""));
}
else
{
good.setSale_name(highliStr);
}
}
if ("name".equals(filedName))
{
good.setName(RequestUtil.VailStr(value, ""));
}
if ("advertiseWords".equals(filedName))
{
String filterStr = LabelUtil.filter(RequestUtil.VailStr(d.stringValue(), ""));
String highliStr = highlighter.getBestFragment(LuceneContacts.analyzer, d.name(), filterStr);
if (StringUtil.isEmpty(highliStr))
{
good.setAdvertise_words(RequestUtil.VailStr(value, ""));
}
else
{
good.setAdvertise_words(highliStr);
}
}
if ("price".equals(filedName))
{
if (value != null && !"".equals(value) && !"null".equals(value))
{
good.setPrice(new BigDecimal(value));
}
else
{
good.setPrice(new BigDecimal(0));
}
}
if ("onShelfTime".equals(filedName))
{
Date date = null;
if (value != null && !"".equals(value))
{
date = new Date(RequestUtil.FormatDaeHH(value));
}
good.setOn_shelf_time(date);
}
if ("primaryPicName".equals(filedName))
{
good.setPrimaryPicName(RequestUtil.VailStr(value, ""));
}
if ("imgPath".equals(filedName))
{
good.setImgPath(RequestUtil.VailStr(value, ""));
}
if ("picType".equals(filedName))
{
good.setPicType(RequestUtil.VailStr(value, ""));
}
}
goodsList.add(good);
}
searcher.close();
}
return goodsList;
}
public static List<Goods> SearchForContent(String indexPath, String keyword, int start, int max,
String orderByField, String orderByType) throws Exception
{
List<Goods> goodsList = new ArrayList<Goods>();
String path = indexPath + "index";
IndexSearcher indexSearcher = new IndexSearcher(path);
IndexSearcher indexSearchers[] = { indexSearcher };
MultiSearcher searcher = new MultiSearcher(indexSearchers);
if (searcher != null)
{
String[] fields = { "saleName", "advertiseWords" };
BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD };
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
keyword = LabelUtil.filter(keyword);
Query query = MultiFieldQueryParser.parse(keyword, fields, clauses, analyzer);
boolean orderby = true;
if ("asc".equalsIgnoreCase(orderByType))
{
orderby = false;
}
SortField sortField = new SortField(orderByField, orderby);
Sort sort = new Sort(sortField);
Hits top = null;
if ("sales".equals(orderByField))
{
top = searcher.search(query);
}
else
{
top = searcher.search(query, sort);
}
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter(LS, LE);
Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));
highlighter.setTextFragmenter(new SimpleFragmenter(100));
if (max > top.length())
max = top.length();
for (int i = start; i < max; i++)
{
Document doc = top.doc(i);
List<Field> list = doc.getFields();
Goods good = new Goods();
for (Field d : list)
{
String filedName = d.name();
String value = d.stringValue();
if ("goodsId".equals(filedName))
{
String goodsId = RequestUtil.VailStr(value, "");
good.setGoods_id(Long.parseLong(goodsId));
}
if ("saleName".equals(filedName))
{
String filterStr = LabelUtil.filter(RequestUtil.VailStr(d.stringValue(), ""));
String highliStr = highlighter.getBestFragment(LuceneContacts.analyzer, d.name(), filterStr);
if (StringUtil.isEmpty(highliStr))
{
good.setSale_name(RequestUtil.VailStr(value, ""));
}
else
{
good.setSale_name(highliStr);
}
}
if ("name".equals(filedName))
{
good.setName(RequestUtil.VailStr(value, ""));
}
if ("advertiseWords".equals(filedName))
{
String filterStr = LabelUtil.filter(RequestUtil.VailStr(d.stringValue(), ""));
String highliStr = highlighter.getBestFragment(LuceneContacts.analyzer, d.name(), filterStr);
if (StringUtil.isEmpty(highliStr))
{
good.setAdvertise_words(RequestUtil.VailStr(value, ""));
}
else
{
good.setAdvertise_words(highliStr);
}
}
if ("price".equals(filedName))
{
if (value != null && !"".equals(value) && !"null".equals(value))
{
good.setPrice(new BigDecimal(value));
}
else
{
good.setPrice(new BigDecimal(0));
}
}
if ("onShelfTime".equals(filedName))
{
Date date = null;
if (value != null && !"".equals(value))
{
date = new Date(RequestUtil.FormatDaeHH(value));
}
good.setOn_shelf_time(date);
}
if ("primaryPicName".equals(filedName))
{
good.setPrimaryPicName(RequestUtil.VailStr(value, ""));
}
if ("imgPath".equals(filedName))
{
good.setImgPath(RequestUtil.VailStr(value, ""));
}
if ("picType".equals(filedName))
{
good.setPicType(RequestUtil.VailStr(value, ""));
}
}
goodsList.add(good);
}
searcher.close();
}
return goodsList;
}
发表评论
-
TestIndex
2014-11-07 11:55 0package com.yulong.lucene.test; ... -
RequestUtil
2014-11-07 11:41 0package com.yulong.lucene.util; ... -
SearchLuceneForCmsLog
2014-11-07 11:40 0package com.yulong.lucene.biz; ... -
LabelUtil
2014-11-07 11:38 0package com.yulong.lucene.util; ... -
LucenePool
2014-11-07 11:36 278package com.yulong.lucene.core; ... -
LuceneContacts
2014-11-07 11:36 421package com.yulong.lucene.core; ... -
WriteLucene
2014-11-07 11:35 440package com.yulong.lucene.biz; ... -
SearchLuceneForAdmin
2014-11-07 11:33 0package com.yulong.lucene.biz; ... -
RebuildLucene
2014-11-07 11:32 379package com.yulong.lucene.biz; ... -
MoveLuceneSmall
2014-11-06 10:01 295package com.yulong.lucene.biz; ... -
MoveLuceneRebuild
2014-11-06 09:59 280package com.yulong.lucene.biz; ...
相关推荐
Luence和ElasticSearch面试准备.docx
用来测试luence运行的结果是否正确。运行直接使用即可。
完整的IKanalyzer2012和luence4.3.0、luence3.6.1的压缩包,内含有IKAnalyzer2012的说明文档
下载可运行。 使用前后端分离架构, 使用springMvc 、 spring、 mybatis、 luence等技术开发的开源知识库所有后台代码
获取全部Luence数据
lucene 原理与分析,底层源码解析,应用场景及实践,相关配置
Luence in Action 中英文 pdf
利用Luence.net做的搜索,实现搜索高亮,盘古分词,只能匹配,是做搜索的好例子。
基于ajax与luence构建搜索引擎的设计和实现论文.doc
基于ajax与luence构建搜索引擎的设计和实现_论文.doc
Luence.Net搜索Demo
基本的垂直搜索引擎,实现了基本的网络爬虫功能以及用Luence实现检索
luence4.6 源代码
前后端分离项目使用的spring Mvc、 mybatis、 luence、 spring 开发的开源知识库系统的所有后端端源码。 下载可运行。 使用前后端分离架构, 使用springMvc 、 spring、 mybatis、 luence等技术开发的开源知识库所有...
VerticalSearcher基本的垂直搜索引擎,实现了基本的网络爬虫功能以及用Luence实现检索
使用luence索引数据库中的记录,完整的例子
stopword+dic 分词器分析
VS2013使用盘古分词先对用户输入的句子进行分割,在进行词语的查询的使用软件
首先读取文件,添加数据库记录,然后lucene读取数据库生成索引文件,再通过lucene检索
使用Lucene,可以非常方便给我们的应用增加上全文索引的功能,使用上也非常简单,示例JAVA代码,为了简单好理解,示例是以将内存中加入一些字符串,并通过查询结果,再将结果显示出来