java关键字查询算法
发布网友
发布时间:2022-04-19 19:43
我来回答
共4个回答
热心网友
时间:2022-04-10 03:26
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
public class search
{
//查找方法,参数,文件绝对路径,查找关键字
public static boolean search(String filepath,String key)
{
try
{
File f = new File(filepath);
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = "";
//int i = 1;
while((s = br.readLine()) != null)
{
if(s.indexOf(key) != -1)
{
return true;
}
}
return false;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}
public static void main(String args[])
{
System.out.println(search.search("d://t.txt","l2"));
}
}
修改了下,加两个变量,可以指出查找的位置。
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.File;
public class search
{
//查找方法,参数,文件绝对路径,查找关键字
public static String search(String filepath,String key)
{
try
{
File f = new File(filepath);
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = "";
int i = 1;
int m = 0;
while((s = br.readLine()) != null)
{
if((m = s.indexOf(key)) != -1)
{
return "第"+i+"段,第"+m+"处";
}
i++;
}
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public static void main(String args[])
{
System.out.println(search.search("d://t.txt","asd"));
}
}
这个,查汉字是没有问题的。
另外,你要全文检索的话,indexOf()还有个方法,indexOf(int start,String key),指定开始查找的位置跟关键字,你查到一处后,将这个数值加1,做为继续查找的开始位置就可以了。
热心网友
时间:2022-04-10 04:44
你是不是要做文本编辑器?或者是本地搜索类的软件?
如果是的话,恐怕你要去看看自然语言处理方面的东西。
比如分词。你需要把你的要查询的文档分词,然后按照分词的结果做索引。这样才可以!
热心网友
时间:2022-04-10 06:19
这样做不完善啊 假如别人输入
int String
或者
int S
好像也会被认为是关键字吧。
热心网友
时间:2022-04-10 08:10
就用readline方法,
一行一行地查吧,
楼上的算法还是可行的,
要指出在哪一行,
直接在readline中设置一个变量就可以了,
扫过一行自增就行
另外个人认为,
还要考虑这样一种情况,
比如说关键字为 java
但 ja
va
被分开在两行中了,
这个怎么算呢?