1、所需工具包:paoding-analysis-2.0.4-beta.zippaoding-analysispaoding-analysis.jarcompass-2.2.0-with-dependencies.zipcompass-2.2.0distcommons-logging.jarcompass-2.2.0distcompass-2.2.0.jarcompass-2.2.0distlucenelucene-analyzers.jarcompass-2.2.0distlucenelucene-core.jarcompass-2.2.0distlucenelucene-highlighter
2、.jarcompass-2.2.0distlucenelucene-queries.jarcompass-2.2.0distlucenelucene-snowball.jarcompass-2.2.0distlucenelucene-spellchecker.jarcompass-2.2.0libjakarta-commons commons-dbcp.jarcompass-2.2.0libjakarta-commons commons-logging.jarcompass-2.2.0libjakarta-commons commons-pool.jar创建用户库:Windows-Prefer
3、ences-user libraries-paoding:将 paoding-analysis.jar 导入compass:将 commons-logging.jar、compass-2.2.0.jar、lucene-analyzers.jar、lucene-core.jar 、 、lucene-highlighter.jar、lucene-queries.jar、lucene-snowball.jar 、lucene-spellchecker.jar、commons-dbcp.jar、commons-logging.jar、commons-pool.jar 导入。第一个小例子创建项目工程新建
4、一个 Compass 工程(java project) ,将 paoding、compass 两个用户库导入将 paoding-analysis 目录下的 dic 目录拷贝到 src 目录下:将 paoding-analysissrc 目录下的 paoding-dic-home.properties 拷贝到src 目录下,在最后加一行:paoding.dic.home=classpath:dic如下图所示:程序目录结构如下:源代码Person.java 内容如下:package pass.bean;import pass.annotations.Index;import pass.annota
5、tions.Searchable;import pass.annotations.SearchableId;import pass.annotations.SearchableProperty;import pass.annotations.Store;Searchablepublic class Person private String personid;private String personname;private String favority;private Integer age;private String remarks;public Person() public Per
6、son(String personid) this.personid = personid;public Person(String personid, String personname, String favority,Integer age, String remarks) this.personid = personid;this.personname = personname;this.age = age;this.favority=favority;this.remarks = remarks;SearchableIdpublic String getPersonid() retu
7、rn personid;public void setPersonid(String personid) this.personid = personid;SearchableProperty(index=Index.ANALYZED,store=Store.YES)public String getPersonname() return personname;public void setPersonname(String personname) this.personname = personname;SearchableProperty(index=Index.ANALYZED,stor
8、e=Store.NO)public Integer getAge() return age;public void setAge(Integer age) this.age = age;SearchableProperty(index=Index.NOT_ANALYZED,store=Store.YES)public String getRemarks() return remarks;public void setRemarks(String remarks) this.remarks = remarks;SearchableProperty(index=Index.ANALYZED,sto
9、re=Store.YES)public String getFavority() return favority;public void setFavority(String favority) this.favority = favority;PersonTest.java 内容如下:package junit.test;import java.io.File;import java.io.IOException;import java.util.Collection;import java.util.Iterator;import org.apache.lucene.document.Do
10、cument;import org.apache.lucene.index.IndexReader;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import pass.annotations.config.CompassAnnotationsConfiguration;import pass.core.Compass;import pass.core.CompassHits;import pass.core.CompassQuery.SortDirection;impor
11、t pass.core.CompassQuery.SortPropertyType;import pass.core.CompassQueryBuilder;import pass.core.CompassSession;import pass.core.config.CompassEnvironment;import org.junit.BeforeClass;import org.junit.Test;import pass.bean.Person;public class PersonTest private static Compass compass ;/ SessionFactor
12、yBeforeClasspublic static void beforeClass() try / 编程式配置compass = new CompassAnnotationsConfiguration().setSetting(CompassEnvironment.CONNECTION,“file:/d:/index“)/ .setSetting(CompassEnvironment.CONNECTION,“file:/indexfile“);/在内存中建立索引/ 一元分词/二元分词/字典文件.setSetting(“compass.engine.analyzer.default.type“
13、,“net.paoding.analysis.analyzer.PaodingAnalyzer“).setSetting(“compass.engine.highlighter.default.formatter.simple.pre“,“).setSetting(“compass.engine.highlighter.default.formatter.simple.post“,“)/ 此处须注意.addScan(“pass“).buildCompass(); catch (Exception e) e.printStackTrace();Testpublic void buildIndex
14、()CompassSession compassSession = compass.openSession();try compassSession.beginTransaction();Person person1 = new Person(“sno1“, “张三“, “篮球足球“,10, “张三的个人说明“);compassSession.create(person1);Person person2 = new Person(“sno2“, “李四“, “门球乒乓球“,11, “李四的个人说明“);compassSession.create(person2);Person person3
15、= new Person(“sno3“, “马五“, “门球足球“, 12, “马五的个人说明“);compassSession.create(person3);Person person4 = new Person(“sno4“, “王六“, “羽毛球篮球“, 13, “王六的个人说明“);compassSession.create(person4);Person person5 = new Person(“sno5“, “钱七“, “篮球乒乓球“,15, “钱七的个人说明“);compassSession.create(person5);Person person6=new Person(
16、“sno6“,“赵二“,“足球乒乓“,14,“赵二爱好乒乓“);compassSession.create(person6);Person person7=new Person(“sno7“,“王一“,“乒乓“,14,“王一爱好乒乓“);compassSession.create(person7);Person person8=new Person(“sno8“,“铁公鸡“,“台球“,14,“铁公鸡爱好乒乓“);compassSession.create(person8);compassSmit(); catch (Exception e) e.printStackTrace();compas
17、sSession.rollback(); finally if (compassSession != null Testpublic void deleteIndex()CompassSession compassSession=compass.openSession();compassSession.delete(new Person(“sno1“);compassSmit();Testpublic void updateIndex()CompassSession compassSession=compass.openSession();compassSession.delete(new P
18、erson(“sno2“);compassSession.create(new Person();compassSmit();Test public void queryIndex()CompassSession compassSession=compass.openSession();CompassHits hits=compassSession.find(“篮球“);for(int i=0;ihits.length();i+)Person person=(Person)hits.data(i);if(hits.highlighter(i).fragment(“personname“)!=n
19、ull)person.setPersonname(hits.highlighter(i).fragment(“personname“);if(hits.highlighter(i).fragment(“favority“)!=null)person.setFavority(hits.highlighter(i).fragment(“favority“);if(hits.highlighter(i).fragment(“remarks“)!=null)person.setRemarks(hits.highlighter(i).fragment(“remarks“);System.out.prin
20、tln(“标识:“+person.getPersonid()+“ 姓名:“+person.getPersonname()+“ 年龄:“+person.getAge()+“ 爱好:“+person.getFavority()+“ 备注:“+person.getRemarks();Testpublic void complexQuery()CompassSession compassSession=compass.openSession();CompassQueryBuilder queryBuilder = compassSession.queryBuilder();CompassHits hi
21、ts=queryBuilder.bool()/.addMust(queryBuilder.spanEq(“remarks“,“个人说明“ ).addMust(queryBuilder.spanEq(“personid“, “sno3“).toQuery().addSort(“postion“, SortPropertyType.STRING, SortDirection.REVERSE).hits();for(int i=0;ihits.length();i+)Person person=(Person)hits.data(i);person.setRemarks(hits.highlight
22、er(i).fragment(“remarks“);System.out.println(person.getPersonname()+“ “+person.getRemarks();Testpublic void readerCFS()Directory dir;File file;try file=new File(“D:/index/index/person“);dir = FSDirectory.getDirectory(file);IndexReader indexReader = IndexReader.open(dir);int max = indexReader.maxDoc(
23、);for (int i = 0; i max; i+) Document document = indexReader.document(i);Collection conn = null;conn = indexReader.getFieldNames(IndexReader.FieldOption.ALL);Iterator iter = conn.iterator();for (Iterator iterator = conn.iterator(); iterator.hasNext();) String s = (String) iterator.next();System.out.
24、println(i + “ “ + s + “ “ + document.get(s); catch (IOException e) e.printStackTrace();finally第二个小例子(SearchableComponent)源代码Student.java 内容如下:package pass.bean;import pass.annotations.Index;import pass.annotations.Searchable;import pass.annotations.SearchableComponent;import pass.annotations.Searcha
25、bleId;import pass.annotations.SearchableProperty;import pass.annotations.Store;Searchablepublic class Student private String sno;private String name;private String favority;private Integer age;private String sex;private String remarks;private Class asclass;public Student() public Student(String sno)
26、 this.sno = sno;public Student(String sno, String name, String favority, Integer age,String sex, String remarks) this.sno = sno;this.name = name;this.favority = favority;this.age = age;this.sex = sex;this.remarks = remarks;SearchableComponentpublic Class getAsclass() return asclass;public void setAs
27、class(Class asclass) this.asclass = asclass;SearchableIdpublic String getSno() return sno;public void setSno(String sno) this.sno = sno;SearchableProperty(index=Index.ANALYZED,store=Store.YES,name=“studentName“)public String getName() return name;public void setName(String name) this.name = name;SearchableProperty(index=Index.ANALYZED,store=Store.YES)public String getFavority() return favority;public void setFavority(String favority) this.favority = favority;