Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7590927 建立时间:2006年5月29日 |

| |
[Hibernate]使用hibernate实现树形结构无限级分类 软件技术
lhwork 发表于 2006/12/14 16:09:57 |
在系统中,经常会用到无限级的树形结构分类,如组织机构管理、商品/地区分类等等。一般无外采用两种方式:
一是类似struts-menu(http://struts-menu.sourceforge.net)的XML文件管理方式,配置起来比较方便,但很难与系统中其它应用数据集成;
二是使用数据库存储,定义父子关系。
在我们现在开发的一个产品中,使用hibernate实现了一套树形结构的处理方法,简介如下:
■演示地址:http://219.143.69.2:8000 |
|
[Apache(jakarta)]java搜索引擎: lucene学习笔记 1 软件技术
lhwork 发表于 2006/12/14 11:51:48 |
简介Doug Cutting 于2000年开始的项目 2001年9月后加入apache, Lucene是Doug
Cutting的middle name 。 目前Lucene已经是apache的top level的项目, 已经不在jakarta下面,
同时也有了python,perl,c++,.net, Ruby(进行中)多个版本
Lucene 主要的两个任务:indexing and searching
Indexing主要使用的类
IndexWriter
较核心的类,index文件由它创建
Directory
一个抽象的标示index文件地址的类,有两个实现:FSDirectory和RAMDirectory, 前者是基于文件系统,后者使用内存 |
|
[Apache(jakarta)]java搜索引擎: lucene学习笔记 2 软件技术
lhwork 发表于 2006/12/14 11:50:53 |
Boosting特性
luncene对Document和Field提供了一个可以设置的Boosting参数, 这个参数的用处是告诉lucene, 某些记录更重要,在搜索的时候优先考虑他们 比如在搜索的时候你可能觉得几个门户的网页要比垃圾小站更优先考虑
lucene默认的boosting参数是1.0, 如果你觉得这个field重要,你可以把boosting设置为1.5,
1.2....等,
对Document设置boosting相当设定了它的每个Field的基准boosting,到时候实际Field的boosting就是
(Document-boosting*Field-boosting)设置了一遍相同的boosting.
似乎在lucene的记分公式里面有boosting参数,不过我估计一般人是不会去研究他的公式的(复杂),而且公式也无法给出最佳值,所以我们所能做的只能是一点一点的改变boosting, 然后在实际检测中观察它对搜索结果起到多大的作用来调整
一般的情况下是没有必要使用boosti |
|
[Apache(jakarta)]java搜索引擎: lucene学习笔记 3 软件技术
lhwork 发表于 2006/12/14 11:46:53 |
搜索
Lucene搜索的api的类主要有4个 IndexSearcher ,Query(包括子类),QueryParser,Hits IndexSearcher是搜索的入口,他的search方法提供了搜索功能
Query有很多子类, 各种不同的子类代表了不同的查询条件,下文详述
QueryParser是一个非常通用的帮助类,他的作用是把用户输入的文本转换为内置的Query对象(大多数web搜索引擎都提供一个查询输入
框来让用户输入查询条件)。QueryParser内置提供了很多语法来使使用可以输入各种高级条件的Query。比如: "Hello AND
world"会被解析为一个AND关系的BooleanQuery,他包含两个TermQuery(Hell和world)。这些语法虽然强大,但都针对
英文设计,对我们需要中文搜索来说都不需要了解太多的Query类型,一般几个简单的就够用了。QueryParser的使用如下
QueryParser.parse(String query, String fiel |
|
[Apache(jakarta)]lucene多种搜索方式详解例子 软件技术
lhwork 发表于 2006/12/14 10:50:37 |
package src;
import java.io.StringReader; import java.util.Date;
import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.SimpleAnalyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.cjk.CJKAnalyzer; import org.apache.lucene.analysis.cn.ChineseAnalyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.DateField; import org.apach |
|
[Apache(jakarta)]Lucene 中文分词的 highlight 显示 软件技术
lhwork 发表于 2006/12/14 10:18:54 |
1 、问题的来源
增加分词以后结果的准确度提高了,但是用户反映返回结果的速度很慢。原因是, Lucene 做每一篇文档的相关关键词的高亮显示时,在运行时执行了很多遍的分词操作。这样降低了性能。
2 、解决方法
在
Lucene1.4.3 版本中的一个新功能可以解决这个问题。 Term Vector 现在支持保存
Token.getPositionIncrement() 和 Token.startOffset() 以及 Token.endOffset()
信息。利用 Lucene 中新增加的 Token 信息的保存结果以后,就不需要为了高亮显示而在运行时解析每篇文档。通过 Field
方法控制是否保存该信息。修改 HighlighterTest.java 的代码如下:
// 增加文档时保存 Term 位置信息。
private void addDoc(IndexWriter writer, String text) throws IOException
|
|
[Apache(jakarta)]Nutch的自动运行 (windows) 软件技术
lhwork 发表于 2006/12/13 16:04:58 |
1: 在Windows下调用nutch的脚本,可实现自动运行,这样做可以不用crywin来模拟linux,下面式win xp调用nutch的脚本
nutch.bat
@cmd /Vn /c %~dp0nutch1.bat %*
nutch1.bat
@echo on
rem *********************************************************************
rem * A script to launch nutch on Windows 2000/XP System.
rem *
rem * Written by babatu
rem *
阅读全文(2531) | 回复(1) | 编辑 | 精华 | 删除 |
| | |
|