下载一个 Lucene的最新发布版,
成都创新互联公司是专业的广阳网站建设公司,广阳接单;提供做网站、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行广阳网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
里面有Demo程序,并且配有文档。
看懂之后,稍加修改,可以基本满足你的需要。
然后如果想要性能更好的中文分词(Lucene自带的中文分词有两种方式:1、按字索引;2、二个字为一个词进行索引),需要找一些中文分词的文章看看(推荐使用 ICTCLAS(中科院的分词系统)的java版,或者海量分词的java版)。
注意在建立索引的时候,需要保存Term的位置信息,这样在显示结果文档进行高亮显示时,速度会比较快。
可以访问我的BLOG:
我里面有一篇总结,希望对你有帮助。
如果你的分词规则是在一个字符串的开头和结尾加上"_",然后两个字符一分的话,代码可以这样写:
import java.util.ArrayList;
import java.util.List;
public class Participle
{
private static final String HEAD_END_STR = "_";
private static final int PARTICIPLE_LENGTH = 2;
public static void main(String[] args)
{
String exampleWord = "计算机";
exampleWord = "_" + exampleWord + "_";
int length = exampleWord.length();
ListString result = new ArrayListString();
for (int i = 0; i length - 1; i++)
{
String str = exampleWord.substring(i, i + PARTICIPLE_LENGTH);
result.add(str);
}
System.out.println(result);
}
}
输出结果:_计, 计算, 算机, 机_
现可以提供两种思路:
1.String或是StringBuffer(建议用) 中的indexOf("中华")方法,查找给定的的字符串中是否有给定词表中的词。
2.借鉴编译原理中的状态装换的思想。
先编写一个状态机,用于测试给定字符串中的词是否满足词表中的内容。
写在最后:1)建议使用第一种方法,因为在java 内部实现的查找操作其实 和你想得思路是相同的,不过他的效率会高些。
2)如果个人的编程能力比较强或是不考虑效率只是想实现专有的分词算法。可以使用第二种方法。
3)以上的两种方法都可以使用多线程来提高程序的效率。