- 浏览: 69512 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (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 308package com.yulong.lucene.core; ... -
LuceneContacts
2014-11-07 11:36 455package com.yulong.lucene.core; ... -
WriteLucene
2014-11-07 11:35 481package com.yulong.lucene.biz; ... -
SearchLuceneForAdmin
2014-11-07 11:33 0package com.yulong.lucene.biz; ... -
RebuildLucene
2014-11-07 11:32 402package com.yulong.lucene.biz; ... -
MoveLuceneSmall
2014-11-06 10:01 327package com.yulong.lucene.biz; ... -
MoveLuceneRebuild
2014-11-06 09:59 313package com.yulong.lucene.biz; ...
相关推荐
"luence客户端测试软件luke" 指的是一个名为"Luke"的工具,它是针对Apache Lucene(一个流行的全文搜索引擎库)的客户端测试和分析工具。Luence可能是“Lucene”的拼写错误,但在这里我们假设指的是Lucene。 **描述...
《Luence和ElasticSearch面试准备》 Lucene和ElasticSearch是两个在全文搜索引擎领域中广泛使用的开源工具。Lucene是一个高性能、全文本搜索库,而Elasticsearch则是在Lucene的基础上构建的一个分布式、RESTful风格...
《Luence.net搜索小程序深度解析》 在信息技术日益发达的今天,搜索引擎已成为数据挖掘与信息检索的重要工具。本文将深入探讨一款基于.NET平台的搜索引擎——Luence.net,它以其高效、灵活的特点,为开发者提供了...
### 获取全部Luence数据 #### 知识点详解 **Lucene** 是一个高性能、全功能的文本搜索引擎库。在本文档中,我们将探讨如何通过Lucene获取索引中的所有文档,包括创建索引、查询索引以及遍历所有文档的具体步骤。 ...
《Luence搜索Demo详解》 在信息技术领域,搜索引擎已经成为数据检索不可或缺的一部分,而Luence作为一款高性能、可扩展的全文搜索引擎库,深受开发者喜爱。本文将深入探讨基于.NET平台的Luence.Net搜索Demo,帮助...
lucene 原理与分析,底层源码解析,应用场景及实践,相关配置
IKAnalyzer和Lucene是两个在中文处理领域广泛应用的开源项目。IKAnalyzer是一个专门针对中文的分词工具,而Lucene则是一个全文检索框架。这里我们深入探讨这两个组件以及它们的关联。 **IKAnalyzer** 是一个高性能...
总之,“Luence的与盘古分词的使用软件”是将Lucene.NET和盘古分词相结合,利用C# .NET技术在VS2013环境下构建的一款文本处理应用。它实现了对用户输入句子的分词,以及基于分词结果的索引查询,从而在大量文本数据...
在IT行业中,前后端分离是一种常见的软件开发模式,它将应用程序分为两个主要部分:前端(用户界面)和后端(服务器逻辑)。这种架构允许前端和后端开发人员独立工作,提高了开发效率,并提供了更好的可维护性和扩展...
5. **luence46**: 这个压缩包可能包含了Lucene 4.6版本的源代码,源码提供了深入了解其内部工作原理的机会。你可以通过阅读和分析源代码,学习如何实现自己的搜索功能,或者优化现有系统的搜索性能。 通过对...
在"Luence简单实例"中,我们可能会看到以下步骤的Java代码实现: 1. **创建索引**: 首先,需要创建一个`IndexWriter`对象,设置好索引目录和分析器。接着,通过`Document`对象添加字段,如`add(new Field("content...
标题 "luence索引例子" 暗示我们要探讨的是Lucene,一个广泛使用的全文搜索引擎库,它在处理大量文本数据时提供了高效的检索能力。在这个例子中,我们将深入理解如何利用Lucene创建索引来优化数据库记录的搜索性能。...
前后端分离项目使用的spring Mvc、 mybatis、 luence、 spring 开发的开源知识库系统的所有后端端源码。 下载可运行。 使用前后端分离架构, 使用springMvc 、 spring、 mybatis、 luence等技术开发的开源知识库所有...
《Lucene in Action》是一本深入探讨Apache Lucene的权威指南,这本书的中英文PDF版本提供了全面了解和学习这个搜索引擎库的机会。Lucene是Java开发的一款高性能、全文本搜索库,广泛应用于各种需要强大搜索功能的...
在搜索引擎和信息检索领域,Lucene是一个非常重要的开源全文搜索引擎库。它提供了高效的文本索引和搜索功能,被广泛应用于各种信息系统的后台。在Lucene中,为了提高搜索的准确性和效率,通常会使用到一些优化技术,...
基于 Ajax 与 Lucene 构建搜索引擎的设计和实现 摘要: 近年来,计算机技术的不断发展,人们已经把从互联网上获取需要的信息成为了一种生活习惯,这种行为便脱离不开搜索引擎的使用。然而 Lucene 现阶段搜索引擎...
《构建垂直搜索引擎:VerticalSearcher与Lucene的实践》 在信息技术日新月异的今天,搜索引擎已经成为我们获取信息的重要工具。垂直搜索引擎是相对于通用搜索引擎而言的,它专注于某一特定领域,如科技、医疗或教育...
《构建垂直搜索引擎:从爬虫到Lucene检索》 在当今信息爆炸的时代,搜索引擎成为了我们获取知识、解决问题的重要工具。本项目实践旨在介绍如何构建一个基础的垂直搜索引擎,该搜索引擎专注于某一特定领域的信息检索...
《深入理解Lucene搜索引擎》 Lucene,作为一个开源的全文搜索引擎库,被广泛应用于各种信息检索系统中。它提供了一套高效、灵活的文本搜索解决方案,使得开发者能够快速地在大量数据中实现高效的全文检索功能。...