导航:首页 > 编程知识 > 搜索字典用java怎么编程

搜索字典用java怎么编程

发布时间:2023-06-14 20:26:54

① 怎么用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中。

如下图所示

二.搜索索引

1.lucene搜索的核心步骤:

String[]fields={“title”,“summary”,……};//要查找的field范围

BooleanClause.Occur[]flags={BooleanClause.Occur.SHOULD, BooleanClause.Occur.MUST ,……};

Queryquery = MultiFieldQueryParser.parse(queryStr, fields,flags,new StandardAnalyzer());

Hitshits=newIndexSearcher(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.mole目录下添加一个新的package

例如:com.cscec.oa.searchengine.extend.mole.resourcestore

2.在新的目录下建立data package并建立相应的数据类,并使这个数据类继承BeanData。

例如:

package com.cscec.oa.searchengine.extend.mole.resourcestore.data

public class ResourceStoreBeanData extends BeanData{

}

3.与data package同一级目录建立manager package并建立相应管理类,并使这个管理类继承BeanDataManager

例如:

com.cscec.oa.searchengine.extend.mole.resourcestore.manager

public class extends BeanDataManager{

}

4.以管理员的身份登陆OA后,在菜单中找到“索引模块管理”链接,将相应信息添加完成后,便可以在List页面点击“创建索引”对该模块的数据进行索引的建立,建立完成后便可以进行查询。

② java字典怎么使用

Map可以实现类似数据库的功能。比如一个人的姓名和年龄信息你可以存在一个Map里面,就像这样: Map map = new HashMap(); map.put("张三", 40)

③ java 编程,搜索txt中关键字

import java.io.*;
public class Keyword{
public void test(String keyword)throws IOException{
String fileName = "MagazineList.txt";
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);
String nextLine;

int line=1;
while((nextLine=br.readLine())!=null){
if(nextLine.indexOf(keyword)>-1){
System.out.println(line+"行 "+nextLine);
}
line++;
}
}

public static void main(String[] args)throws IOException{
new Keyword().test("java");
}
}

一个完整的例子,请参考

④ java如何实现文件搜索功能

java实现文件搜索主要使用类和正则表达式,如下示例:

packagecom.kiritor.util;

importjava.io.File;
importjava.io.FileFilter;
importjava.util.Arrays;
importjava.util.Collections;
importjava.util.List;

/**
*文件的相关操作类
*
*@authorKiritor
*/
publicclassFileOperation{
;
privatestaticStringfilePath;
privatestaticFile[]fileList=null;//保存文件列表,过滤掉目录

publicFileOperation(){

}

/**构造函数的参数是一个目录*/
publicFileOperation(Stringpath){
Filefile=newFile(path);
if(file.isDirectory())
this.contentPath=path;
else
this.filePath=path;
}
/**获取文件列表*/
publicstaticFile[]getFiles(){
if(contentPath==null){

Filefile=newFile(filePath);
fileList=newFile[1];
fileList[0]=file;
returnfileList;
}
fileList=newFile(contentPath).listFiles(newFileFilter(){

/**使用过滤器过滤掉目录*/
@Override
publicbooleanaccept(Filepathname){
if(pathname.isDirectory())
{
returnfalse;
}else
returntrue;
}
});
returnfileList;
}

/**对当前目录下的所有文件进行排序*/
publicstaticFile[]sort(){
getFiles();
Arrays.sort(fileList,newFileComparator());
returnfileList;
}

publicstaticvoidtree(Filef,intlevel){
StringpreStr="";
for(inti=0;i<level;i++){
preStr+="";
}
File[]childs=f.listFiles();
//返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
for(inti=0;i<childs.length;i++){
System.out.println(preStr+childs[i].getName());
if(childs[i].isDirectory()){
tree(childs[i],level+1);
}
}
}

//提供一个"比较器"
.util.Comparator<File>{
@Override
publicintcompare(Fileo1,Fileo2){
//按照文件名的字典顺序进行比较
returno1.getName().compareTo(o2.getName());
}

}
}

⑤ 关于在Java编程的时候如何读取一些字典文件,文件的后缀名为dict 或者 dct

.dic是一种词典文件格式,Dic文件由若干单词单元组成,每一个单元包含了单词与解释信息,每个专单词单元以单词开始,属解释结束。
相邻的两个单词单元之间没有间隔(这样使文件尽可能的小)。
打开方式:
用16位或者32位文件编辑器打开这类文档
Windows操作系统的记事本(16位)可以打开,一些词典软件(如金山词霸)可以打开 “开心字典”、“中文化精灵”、“Resource Modifier”等软件的“对照文本格式”支持这种.dic文件 560+等NP系列的专业词典的格式,只能在机型上使用;
打开词典软件,里边看有无添加词库选项。

⑥ 一个Java编写的英汉词典

说先说:你的代码有错误,在最下面,我已经该过了,不是大问题。
如果你想学好java的话,可以根据这个代码加上我的注解去理解,但不要学这个代码的变成方式或者说变成习惯,这个代码基本上无误,但犯了一些常识性问题,如果养成了这些不好的习惯对以后的编程会有坏的影响。
我是英文学的java,所以有些注解可能不通顺,但我尽力而为了。 有的注解有点长,所以你复制到编译器后稍微编辑一下就可以运行。代码是可以运行,没有问题的。

------------------------------------

import javax.swing.*; //用来创建图形界面,如窗口,表格,按钮等。
import java.awt.*; //作用同上,但已经很少用,能用swing的地方就不要用awt
import java.awt.event.*;//事件管理和控制
import java.sql.*; //数据库语句和操作
import java.lang.System;//这个不知道

/*下面的这6个没有用,纯属写出来吓人*/
import javax.swing.tree.*;
import javax.swing.event.*;
import java.util.*;
import javax.swing.border.*;
import javax.swing.table.*;
import java.lang.String.*;

class Mywindow extends JFrame implements ActionListener//这个类implements actionlistener,意思就是它自己就可以执行actionListener的任务
{
JTextField txf=new JTextField(20); //建一个文字编辑框,长度20(只可以输入一行文字)
JTextArea jt=new JTextArea(10,30);//建一个文字编辑区域,长10宽30(可以回车然后输入多行文字)
JButton btn1=new JButton("查询");//建一个 查询 按钮

Mywindow()//构造函数,每个类必有的,可以为空
{
JFrame frm=new JFrame("Search");//建一个窗口(让其他的东西有地方可放,和容器一样。是3个最高级别的容器之一,其他两个是applet和window)

frm.setBounds(400,300,450,350);//设置大小和位置,前两个是坐标,后两个是大小

Container con=getContentPane();//建一个awt容器对象,用来添加其他元素,最好用这个添加元素。像:frm.add(all); 可以写成 con.add(all);

JPanel pnl4=new JPanel();//建一个面板用来添加其他元素(第二级别容器,最后需要被添加在frame上)
pnl4.setBorder(BorderFactory.createTitledBorder("Search"));//设置边框样式
pnl4.add(txf);//把文字编辑框添加到面板上
pnl4.add(btn1);//把按钮添加到面板上
btn1.addActionListener(this);//添加事件行为监听器(this),this意思是当前对象,呼应 implements ActionListener

JPanel pnl5=new JPanel();//同上
pnl5.setBorder(BorderFactory.createTitledBorder("Result"));//同上
jt.setWrapStyleWord(true);//这个忘了
jt.setLineWrap(true);//在区域规定的宽度下,如果文字的输入到一行最后则会自动令其一行继续,如果是(false),文字输入就会在这一行继续知道回车
pnl5.add(new JScrollPane(jt));//个这个面板添加右侧滚动条,当文字输入超过 长* 宽后 滚动条出现

JPanel all=new JPanel();//同上
all.setLayout(new BorderLayout());//设置布局,borderlayout()分东西南北(上下左右)中五个部分 无论窗口多大,中间占得面积最大
all.add(pnl4,BorderLayout.NORTH);//添加一个面板在上面
all.add(pnl5,BorderLayout.CENTER);//添加一个在中间

frm.add(all);//把最大的这个面板添加到窗口上 也可以用con.add(all);
frm.setVisible(true);//设置窗口显示属性 如果false就是不显示
frm.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});//加一个窗口监听 如果点小红叉关闭窗口则系统推出
}

public void actionPerformed(ActionEvent e)//作为ActionListener类的构造函数,如果你的class implements ActionListenser, 那就必须得有这个,也可以单独写一个class,不过有点麻烦
{
if(e.getSource()==btn1)//当按钮被点击的时候
{
String str="";//建一个字符串
String tmp=this.txf.getText();//同上,这个字符串的值是当前对象(窗口)中,文本框输入的值

for(int k=0;k<tmp.length();k++)//建一个 永久循环
str+=tmp.charAt(k)+"%";//把 % 插入每一个字符后面, 作用后面说

String sql=null;//同上
Statement stmt=null;//定义一个stmt,用来建数据库连接的

sql="select * from chinese where charsound like'"+str+"'";//创建一个sql数据库语句,但它本身还是一个字符串
System.out.println(sql);//系统显示创建的语句,通常找错时候用的

try{//try 和 catch 的作用一句两句说不清楚 不知道你就自己查查
Class.forName("com.mysql.jdbc.Driver");//或者:Class.forName("org.gjt.mm.mysql.Driver");关联mysql数据库驱动
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/japan?user=root&password=sa");//建立连接,数据库名japan(为什么不是chinese?)用户名root密码sa
stmt=conn.createStatement();//建立statement对象,用来发送sql语句到数据库

ResultSet rs=stmt.executeQuery(sql);//运行语句并建立一个查询结果的集合
System.out.println("\n------------------------search :"+str+"-------------------------------");//同上

jt.setText("");//清空文本编辑区域
while(rs.next())//while循环,当还有结果的时候,把所有查询结果添加加到文本编辑区域中
{
jt.append(new String(rs.getString("charname").getBytes("iso-8859-1"),"gb2312")+"\t");
System.out.print(new String(rs.getString("charname").getBytes("iso-8859-1"),"gb2312")+"\t");
}
stmt.close();//关闭关连,很重要。

}
catch(Exception eq){System.out.println("error");}
//--------------------------------------------------------------end btn1-------
}
}

public static void main(String args[])
{
Mywindow win=new Mywindow();//建立一个 mywindow 对象
win.pack();//将所有元素整合
win.show();
}
}

阅读全文

与搜索字典用java怎么编程相关的资料

热点内容
网络评选一般有哪些 浏览:476
2021三支一扶报名数据在哪里看 浏览:914
网络未备案怎么打得开 浏览:987
计算机程序用什么编程语言 浏览:324
linux入门常用命令 浏览:497
江宁区哪里有数控编程培训 浏览:778
java写一个shape形状类 浏览:744
win7如何设置word背景颜色 浏览:484
如何创造电脑编程语言 浏览:56
昂达平板电脑图形密码忘记怎么办 浏览:92
组织文件内容是什么 浏览:183
0基础如何学习智能编程 浏览:366
java程序员全攻略下载 浏览:715
网络逆向教程 浏览:135
iso文件如何重装系统 浏览:750
ghost镜像文件路径如何恢复 浏览:832
搭建网站需要多少钱啊 浏览:599
编程猫怎么设置背景亮度 浏览:177
qq文件破损 浏览:414
javapoi配置 浏览:608

友情链接