「java搜索机制」java搜索功能怎么实现
本篇文章给大家谈谈java搜索机制,以及java搜索功能怎么实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
用Java如何实现搜索功能
web程序的话如下:
画一个页面
表单提交用户输入数据
控制器接收提交到业务层
业务层处理返回页面
搜索实际上就是一个查询 select * from XXX
北大青鸟java培训:常用的搜索框设计的七大技巧?
1.使用放大镜图标根据定义,图标是对象,动作或想法的可视化表示,并且有几个图标是用户记忆最深刻的,也是通用的。
湖北北大青鸟认为放大镜图标就是其中之一。
即使没有文字标签,用户也可以识别放大镜图标的作用。
2.将搜索框放在用户希望找到的地方如果搜索对于你的应用或网站来说是重要的功能,那么搜索框必须放在显眼的位置,让用户一眼就能找到。
研究发现,搜索框放置的最佳位置是你网站上每个页面的左上角或右上角,用户可以使用常见的F形扫描模式轻松找到它。
理想情况下,搜索框应该完美匹配网站的整体设计,并在用户需要时轻松展现。
3.为搜索框提供搜索按钮搜索按钮可以帮助人们了解还有额外的触发操作_即使他们通常使用Enter键。
4.将搜索框放在每一页上始终提供对每个页面的搜索框的访问权限,因为如果你的用户找不到他们正在查找的内容,他们将会使用搜索功能,无论他们处于你网站的哪个位置。
5.使搜索框简单如果你设计一个搜索框,请确保它看起来像一个搜索框,并尽可能简单的使用。
根据可用性研究,默认情况下没有显示高级搜索选项,这样更加显示用户友好。
高级搜索选项可能会混淆将尝试使用它的用户。
6.自适应字段大小输入字段太短是设计人员常见的错误。
当然用户可以键入长查询,但只有一部分文本可见,部分文字被隐藏,这意味着可用性差。
因为用户无法轻松查看和编辑其查询。
实际上,当搜索框能够输入的文本有限时,用户被迫使用短的文本进行查询,这样就不能精确的查询。
如果输入字段根据其预期输入进行大小调整,那么它们更容易阅读并给用户提供良好的用户体验。
7.使用自动建议机制自动建议机制可以帮助用户通过输入的字符进行预测来找到正确的查询。
自动建议机制不是加快搜索过程,而是关于指导用户并帮助他们构建搜索查询。
用户在查询配置方面非常差:如果在第一次尝试时没有获得良好的结果,他们可能就放弃了。
自动建议机制可以帮助用户更好地表达他们需要的搜索查询。
怎么用java 开发一个搜索引擎呀?
一. 创建索引
1.一般创建索引的核心步骤
(1). 创建索引写入对象IndexWriter:
IndexWriter indexWriter = new IndexWriter(INDEX_STORE_PATH,new StandardAnalyzer(),create);
参数说明:INDEX_STORE_PATH: 索引文件存放路径
new StandardAnalyzer(): 分词工具
create: 此参数为Boolean型,true表示重新创建整个索引, false 表示增量式创建索引。
(2).创建文档模型,并用IndexWriter对象写入
Document doc = new Document();
Field field1 = new Field(fieldName1, fieldValue , Field.Store.YES, Field.Index.TOKENIZED);
doc.add(field1);
Field field2 = new Field(fieldName2, fieldValue , Field.Store.YES, Field.Index.TOKENIZED);
doc.add(field2);
……
indexWriter.addDocument(doc);
indexWriter.close();
参数说明:
Document :负责搜集数据源,它可以从不同的物理文件提取数据并放入同一个Document 中或从一个物理文件中提取出不同的数据并放入同一个Document中。
如下图所示
Field :用来表示不同的数据源
fieldName1: 表示field名称
fieldValue: 表示field 的值
Field.Store.YES,:表示是否在索引文件中完整的存储该值。
在创建索引时,有些内容需要以摘要的形式完整地或以片段的方式显示在页面上,来便于用户查找想要的记录,那么就应该选择存储,如果不需要完整或片段的显示就不需要存储。
Field.Index.TOKENIZED :表示是否索引和分词。
只要是需要当作关键字让用户查找的字段就需要建立索引。
在建立索引的过程中,如果像文章标题、文章内容这样的Field, 一般是靠用户输入几个关键字来查询的,就应该选择分词。
如果需要用户输入完整字符也就是精确查找才能查询到的,例如:beanName,就可以不分词。
Document最直观的理解方式:
Document就相当于我们平台中的一个普通javaBean,,而Field 就是javaBean中的一个属性。lucene搜索的机制就是靠搜索指定的Field的值 ,来得到含有要搜索内容的Document 集合,所以问题的关键在于如何组织Document .
2.结合平台创建索引的思路
(1) 经分析搜索元素应该由如下内容组成(Document的属性)
(2) 数据库数据转化为Document 的构造过程:
JavaBean / Attachment → (Temp Object) BaseData → (Finally Object) Document
分析:
要建立索引的源数据分为两大部分:一个是数据库数据 BeanData ,另一个是附件数据 FileData , 这样可以建立一个抽象类 BaseData , 来存放它们共有的属性。同时为了管理这些相应的数据,在相同的等级结构上,建立了相应的管理类(xxxDataManager) ,对这些数据类的操作(建立或删除索引)进行管理,并用一个工厂类(DataManagerFactory)来创建所需要的管理类,IndexHelper用来充当整个索引模块对外的接口,为了实现一些与平台特定的业务,特用SupportManager来提供一些额外的业务支持,索引模块代码结构如下图所示。
二.搜索索引
1. lucene 搜索的核心步骤:
String[] fields = {“title”, “summary”,……}; //要查找的field范围
BooleanClause.Occur[] flags = {BooleanClause.Occur.SHOULD, BooleanClause.Occur. MUST ,……};
Query query = MultiFieldQueryParser.parse(queryStr, fields,flags,new StandardAnalyzer());
Hits hits = new IndexSearcher(INDEX_STORE_PATH).search(query);
for (int i = 0;i hitsLength ; i++)
{
Document doc = hits.doc(i);
String title = doc.get(“title”);
String summary = doc.get(“summary”);
// 搜索出来的结果高亮显示在页面上
if (title != null) {
TokenStream tokenStream = analyzer.tokenStream(“title”,new StringReader(title));
String highlighterValue = highlighter.getBestFragment(tokenStream, title) ;
if(highlighterValue != null){
title = highlighterValue ;
}
//log.info("SearchHelper.search.title="+title);
}
if(summary!= null){
TokenStream tokenStream = analyzer.tokenStream(“summary”,new StringReader(summary));
String highlighterValue = highlighter.getBestFragment(tokenStream, creator) ;
if(highlighterValue != null){
summary = highlighterValue ;
}
//log.info("SearchHelper.search. summary ="+ summary);
}
}
2.结合平台构造搜索模块
PageData 类用来存放检索结果集数据。
PageInfo 类用来存放页面相关信息例如,PageData对象集合、总记录个数、每一页的记录数、 总页面数量等等。
SearchHelper用来充当整个搜索模块的对外接口。
三.为平台组件添加索引的步骤(以知识中心为例)
1.在com.cscec.oa.searchengine.extend.module 目录下添加一个新的package
例如:com.cscec.oa.searchengine.extend.module.resourcestore
2.在新的目录下建立data package 并建立相应的数据类,并使这个数据类继承BeanData。
例如:
package com.cscec.oa.searchengine.extend.module.resourcestore.data
public class ResourceStoreBeanData extends BeanData{
}
3. 与data package 同一级目录建立manager package 并建立相应管理类,并使这个管理类继承BeanDataManager
例如:
com.cscec.oa.searchengine.extend.module.resourcestore.manager
public class ResourceStoreBeanDataManagerImpl extends BeanDataManager{
}
4.以管理员的身份登陆OA后,在菜单中找到“索引模块管理”链接,将相应信息添加完成后,便可以在List 页面 点击“创建索引”对该模块的数据进行索引的建立,建立完成后便可以进行查询。
java搜索第一个广告如何实现
对于java来说,可以通过以下方式实现第一个广告:
1.使用Google AdSense或AdMob,可以将Java应用程序中的广告显示到你的应用程序中。
2.使用JavaScript技术,可以轻松地创建第一个广告,而不必依赖任何其他技术。
3.使用Cookie来跟踪用户使用行为,以智能地提供更好的目标广告。
4.利用A/B测试技术来验证不同的广告活动,以确定哪种活动最能满足用户需求。
5.通过使用动态广告技术,可以根据用户的特定行为来定制广告内容。
用Java如何实现站内搜索
1,使用lucene
2. 使用solr
3. 使用sphinx
4. 低效率使用sql like
关于java搜索机制和java搜索功能怎么实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。