篇一:Lucene的多域查询、结果中查询、查询结果分页、高亮查询结果和结果评分
1.针对多个域的一次性查询
1.1.三种方案
使用lucene构造搜索引擎的时候,如果要针对多个域进行一次性查询,一般来说有三种方法:
第一种实现方法是创建多值的全包含域的文本进行索引,这个方案最简单。但是这个防范有个缺点:你不能直接对每个域的加权进行控制。
第二种方法是使用MultiFieldQueryParser,它是QueryParser的子类,它会在后台程序中实例化一个QueryParser对象,用来针对每个域进行查询表达式的解析,然后使用BooleanQuery将查询结果合并起来。当程序向BooleanQuery添加查询子句时,默认操作符OR被用于最简单的解析方法中。为了实现更好的控制,布尔操作符可以使用BooleanClause的常量指定给每个域。如果需要指定的话可以使用BooleanClause.Occur.MUST,如果禁止指定可以使用BooleanClause.Occur.MUST_NOT,或者普通情况为BooleanClause.Occur.SHOULD。下面的程序展示的是如何创建
MultiFieldQueryParser类的方法:
[java] view plaincopy
1. // 在这四个域中检索
2. String[] fields = { "phoneType", "name", "category", "price" };
3. Query query = new MultiFieldQueryParser(Version.LUCENE_36, fields, analyzer).parse(keyword);
第三种方法就是使用高级DisjunctionMaxQuery类,它会封装一个或者多个任意的查询,将匹配的文档进行OR操作。
1.2.方案选择
以上三种方案中,并不是第三种方案最好,也不是第一种方案就最差。哪种实现方式更适合你的应用程序呢?答案是“看情况”,因为这里存在一些取舍。全包含域是一个简单的解决方案——但这个方案只能对搜索结果进行简单的排序并且可能浪费磁盘空间(程序可能对同样的文本索引两次),但这个方案可能会获得最好的搜索性能。
MultiFieldQueryParser生成的BooleanQuery会计算所有查询所匹配的文档评分的总和(DisjunctionMaxQuery则只选取最大评分),然后它能够实现针对每个域的加权。你必须对以上3中解决方案都进行测试,同时需要一起考虑搜索性能和搜索相关性,然后再找出最佳方案。
2.在结果中查询
2.1.两种方案
在检索结果中再次进行检索,是一个很常见的需求,一般有两种方案可以选择:
①使用QueryFilter把第一个查询当作一个过滤器处理;
②用BooleanQuery把前后两个查询结合起来,并且使用BooleanClause.Occur.MUST。
针对第一种方法,我需要解释一下。QueryFilter在Lucene的2.x版本中是存在的,但是在3.x中,lucene的API中这个类已经被废弃了,无法再找到。如果你的项目使用的是lucene是3.x,但是你又一定要使用QueryFilter,那么你必须自己创建一个QueryFilter类,然后将2.x中QueryFilter的源代码复制过来。你可能会说,直接在工程中同时使用lucene2.x和3.x的核心jar文件不就行了吗。但遗憾的是,一个工程下,是不能同时使用不同版本的lucene的。
2.2.QueryFilter方案
上文已经说了,如果一定要使用QueryFilter,由于lucene2.x中没有QueryFilter的API,所以自己要写一个QueryFilter,QueryFilter的源代码在lucene2.x中是这样的:
[java] view plaincopy
1. import org.apache.lucene.search.CachingWrapperFilter;
2. import org.apache.lucene.search.Query;
3. import org.apache.lucene.search.QueryWrapperFilter;
4.
5. public class QueryFilter extends CachingWrapperFilter {
6.
7. /**
8.* Constructs a filter which only matches documents matching
9.* <code>query</code>.
10.*/
11. public QueryFilter(Query query) {
12.super(new QueryWrapperFilter(query));
13. }
14.
15. public boolean equals(Object o) {
16.return super.equals((QueryFilter) o);
17. }
18.
19. public int hashCode() {
20.return super.hashCode() ^ 0x923F64B9;
21. }
22. }
第一种方案的例子程序如下:
[java] view plaincopy
1. //简单实现对keyword的搜索
2. public static void search(String keyword) throws IOException, ParseException {
3. QueryParser queryParser = new QueryParser("content",new SimpleAnalyzer());
4. Query query = queryParser.parse(keyword.trim());
5. QueryFilter filter = new QueryFilter(query);
6. //检索
7. search(query, filter);
8. }
9.
10. //在搜索oldKeyword的结果集中搜索newKeyword
11. public static void searchInResult(String newKeyword, String oldKeyword) throws ParseException, IOException {
12. QueryParser queryParser = new QueryParser("content",new SimpleAnalyzer());
13. Query query = queryParser.parse(newKeyword.trim());
14. Query oldQuery = queryParser.parse(oldKeyword.trim());
15. QueryFilter oldFilter = new QueryFilter(oldQuery);
16. CachingWrapperFilter filter = new CachingWrapperFilter(oldFilter);
17. //检索
18. search(query, filter);
19. }
20.
21. private static void search(Query query, Filter filter) throws IOException, ParseException {
22. IndexSearcher ins = new IndexSearcher("d:/tesindex");
23. Hits hits = ins.search(query, filter);
24. for (int i = 0; i < hits.length(); i++) {
25.Document doc = hits.doc(i);
26.System.out.println(doc.get("content"));
27. }
28. }2.3.BooleanQuery方案
使用BooleanQuery来实现在结果中检索的过程是这样的,首先通过关键字keyword1正常检索,当用户需要在检索结果中再通过关键字keyword2检索的时候,通过构建BooleanQuery,来实现对在结果中检索的效果。这里要注意,这两个关键字都要使用BooleanClause.Occur.MUST。
[java] view plaincopy 1. //创建BooleanQuery
2. BooleanQuery booleanQuery = new BooleanQuery();
3. //多域检索,在这四个域中检索
4. String[] fields = { "phoneType", "name", "category","free" };
5. Query multiFieldQuery = new MultiFieldQueryParser(Version.LUCENE_36, fields, analyzer).parse(keyword);
6. //将multiFieldQuery添加到BooleanQuery中
7. booleanQuery.add(multiFieldQuery, BooleanClause.Occur.MUST);
8. //如果osKeyword不为空
9. if(osKeyword != null && !osKeyword.equals("") && !osKeyword.equals("null")){
10. TermQuery osQuery = new TermQuery(new Term("phoneType",osKeyword));
11. //将osQuery添加到BooleanQuery中
12. booleanQuery.add(osQuery, BooleanClause.Occur.MUST);
13. }
3.检索结果分页
篇二:国美考试题
一、单选题(每题2分,共15题)
1、在商家后台哪个功能模块内配置“商品库存”:(单选)
A.仓储配送
B.商品管理
C.订单管理
D.账号管理
2、在商家后台哪个功能模块修改退换货售后信息:(单选)
A.店铺装修
B.订单管理
C.仓储配送
D.我的店铺
3、以下哪种促销为国美手机客户端特有的促销形式:(单选)
A.国美专享价
B.直降
C.满返
D.满减
4、商家管理后台登陆地址是:(单选)正确答案:B
A.http://pop.coo8.com/
B.http://pop.gome.com.cn/
C..cn/
D.http://help.gome.com.cn/seller
5、以下哪种促销方式在网页上商品详情页会显示已优惠:(单选)
A.满减
B.满返
C.满赠
D.直降
6、国美在线商家技术支持热线:(单选)
A.4008-708-708
B.010-57950602
C.010-56505232
D.010-56505769
7、顾客在国美在线购买商品,可选择“分期付款”,以下关于分期付款的说法,哪个不正确:(单选)
A.国美在线分期付款服务目前支持:招商银行、民生银行、北京银行等;
B.订单的应付金额少于300元,不用分期付款;
C.订单的应付金额超过5万元,不可用分期付款;
D.分期付款不需要顾客承担手续费用
8、以下哪种国美在线支持的销售方式,商家后台不能够设置:(单选)
A.预约
B.直降
C.单品包邮
D.满赠
9、关于商品评价,以下哪个说法不正确:(单选)
A.商品评价是在订单妥投后,顾客做出的评价,系统不会默认好评;
B.订单妥投后,顾客没有及时做出评价,系统会默认“好评”;
C.顾客可通过商品评价,直接进行晒单
D.商家后台可以针对商品评价进行回复和置顶操作
10、评论置顶、回复在商家后台哪个模块:(单选)
A.我的店铺
B.售后服务
C.订单管理
D.商品管理
11、店铺以下哪个状态能在网站正常显示:(单选)
A.营业
B.休店
C.冻结
D.初始化
12、特例品不能参加以下哪个促销:(单选)正确答案:C
A.满赠
B.直降
C.使用店铺券
D.使用红券
13、店铺优惠券在商家后台的哪个模块下创建:(单选)
A.我的店铺
B.营销管理
C.订单管理
D.商品管理
14、店铺订单的妥投时效为:(单选)
A.正常订单自消费者订单签收后,72小时内
B.正常订单自消费者订单签收后,48小时内
C.正常订单自消费者订单签收后,
24小时内
D.正常订单自消费者订单签收后,12小时内
15、以下哪个促销方式不需要审核:(单选)正确答案:D
A.直降
B.满减
C.满返
D.搭配购
二、多选题(每题2分,共15题)
16、《商品信息规范》中对商品哪些方面做了规范:(多选)
A.商品标题
B.商品简介
C.商品主图
D.商品价格
17、以下哪些商品严禁在店铺售卖:(多选)
A.三无商品
B.未经报关进口商品
C.水货
D.二手货
18、商家可以自行设置店铺券的哪些项目:(多选)
A.面值
B.所需消费金额
C.有效期
D.发放数量
19、平台对商品主图的要求有哪些:
(多选)正确答案:A,B,C,D
A.必须为商品整体图,商品填满画布85%以上
B.图片长宽比必须为正方形
C.主图背景颜色必须与商品有明显差异
D.主图像素不应少于400*400px,建议800*800px以上
20、根据《店铺运营管理规范》,以下对时效管理说法正确的是:(多选)正确答案:A,B,C,D
A.订单出库时效:无不可抗拒理由,商家必须在订单支付48小时内出库
B.订单到货时效为:同城---自订单出库后2天内送达;本省---自订单出库后3天内送达; 全国---自订单出库后5天内送达;偏远地区---:新疆、西藏、青海、西宁、贵州、内蒙、云南等偏远地区自订单出库后10天内送达;
C.正常订单自消费者签收后,48小时内,商家操作妥投
D.在线客服时效管理规定店铺客服在线时间为每天9:00-21:00;
21、下面关于主账号和子账号的说法正确的是:(多选)
A.主账号的用户名及初始密码由国美运营人员发送
B.主账号的用户名及初始密码由商家自主创建
C.子账号的用户名及密码由国美运营人员发送
D.子账号的用户名及密码由商家自主创建
22、通过商家后台的“商品管理”模块可以实现的功能有:(多选)正确答案:A,B,C,D
A.添加新商品
B.店铺分类
C.设置商品广告语
D.上架和下架商品
23、关于退换货处理时效,下列说法中正确的是:(多选)正确答案:A,B,C,D
A.退、换货审核时效为商家24小时内审核并且回复处理意见。
篇三:期刊查证“网页打印件”查询步骤
期刊查证“网页打印件”查询步骤
一、新闻出版总署网页查询目的和步骤
1.查询目的:查询此期刊是否为合法期刊,查询不到的不得上报。
2. 查询步骤(以《学前教育研究》为例) (1)登录中华人民共和国新闻出版总署网站; (2)网页下拉至“在线查询”处,单击“新闻出版机构查询服务”;
(3)在“媒体名称”处输入刊名,“媒体类别”处选择“期刊”,单击查询;
(4)打印搜索结果网页(将此页粘贴于刊物原件封二页); (5)最终打印结果样式(打印此页并粘贴于刊物原件封二页)
二、“中国知网”查询目的和步骤
1.查询目的:查询此期刊物目录中是否有申报人员的论文,查询不到的不得上报。
2. 查询步骤(以《学前教育研究》2010年11期为例): (1)“百度”窗口输入:“中国知网”,按“回车键”或单击“百度一下”窗口;
(2)单击“中国知网首页”;页面下拉至“学术文献总库特色导航”处,单击“期刊大全”。
(3)检索词窗口输入刊名,单击“检索” ;
(4)单击网页显示的所选期刊;
(5)在“收录期刊”处选择点击发表论文的“年份及刊期”,
(6)在目录页浏览位置左侧边栏右击鼠标,单击窗口中“全选”,然后单击窗口“文件”,单击“打印”即可。
(7)最终打印结果样式(打印此页并粘贴于刊物原件封二页)