开始使用
庖丁中文分词需要一套词典,这些词典需要统一存储在某个目录下,这个目录称为词典安装目录。词典安装目录可以是文件系统的任何目录,它不依赖于应用程序的运行目录。将词典拷贝到词典安装目录的过程称为安装词典。增加、删除、修改词典目录下的词典的过程称为自定制词典。
在linux下,我们可以考虑将词典安装在一个专门存储数据的分区下某目录,以笔者为例,笔者将/data作为系统的一个独立分区,笔者便是将词典保存在/data/paoding/dic下。
在windows下,我们可以考虑将词典安装在非系统盘的另外分区下的某个目录,以笔者为例,笔者可能将词典保存在E:/data/paoding/dic下。
使用者安装辞典后,应该设置系统环境变量PAODING_DIC_HOME指向词典安装目录。
在linux下,通过修改/etc/profile,在文件末尾加上以下2行,然后保存该文件并退出即可。
PAODING_DIC_HOME=/data/paoding/dic
export PAODING_DIC_HOME
在windows下,通过“我的电脑”属性之“高级”选项卡,然后在进入“环境变量”编辑区,新建环境变量,设置“变量名”为PAODING_DIC_HOME;“变量值”为E:/data/paoding/dic
第3步,把paoding-analysis.jar拷贝到应用运行时的类路径(classpath)下。使用集成开发环境(IDE)开发应用的使用者,需要把paoding-analysis.jar拷贝到工程中,然后使用IDE向导引入该Jar包,以便开发应用时IDE能够认识它。
至此,便可以在应用代码中使用庖丁提供的中文分析器了。
提醒:以下示例代码中的IDNEX_PATH表示索引库地址,读者运行以下代码前,应该赋与一个不重要的地址,比如/data/paoding/test_index 或E:/paoding_test_index,以免一时疏忽将重要数据丢失。
示例代码:建立索引库,并依此查询 |
String IDNEX_PATH = "E:/paoding_test_index"; //获取Paoding中文分词器 Analyzer analyzer = new PaodingAnalyzer(); //建立索引 IndexWriter writer = new IndexWriter(IDNEX_PATH, analyzer, true); Document doc = new Document(); Field field = new Field("content", "你好,世界!", Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS); doc.add(field); writer.addDocument(doc); writer.close(); System.out.println("Indexed success!");
//检索 IndexReader reader = IndexReader.open(IDNEX_PATH); QueryParser parser = new QueryParser("content", analyzer); Query query = parser.parse("你好"); Searcher searcher = new IndexSearcher(reader); Hits hits = searcher.search(query); if (hits.length() == 0) { System.out.println("hits.length=0"); } Document doc2 = hits.doc(0); //高亮处理 String text = doc2.get("content"); TermPositionVector tpv = (TermPositionVector) reader.getTermFreqVector( 0, "content"); TokenStream ts = TokenSources.getTokenStream(tpv); Formatter formatter = new Formatter() { public String highlightTerm(String srcText, TokenGroup g) { if (g.getTotalScore() <= 0) { return srcText; } return "<b>" + srcText + "</b>"; } }; Highlighter highlighter = new Highlighter(formatter, new QueryScorer( query)); String result = highlighter.getBestFragments(ts, text, 5, "…"); System.out.println("result:\n\t" + result); reader.close(); |