用户名: 密 码:
您现在的位置:首页 >> SEO开发技巧 >> 内容

lucene如何融合compass

时间:2009-11-19 10:21:40 点击:4391

  核心提示:高亮器可以截取一段文本(生成摘要),并且让关键字高亮显示(通过指定前缀与后缀实现,因为是在网页中显示,指定 “font color=’red’”,“/font”,就会在网页中显示为红色)。相关度1相关度是文档的得分2得分受关键字在文档中出现的位置和次数等影响3利用boost影响lucene查询结果的...

高亮器 

可以截取一段文本(生成摘要),并且让关键字高亮显示(通过指定前缀与后缀实现,因为是在网页中显示,指定 “<font color=’red’>”,“</font>”,就会在网页中显示为红色)。

相关度

 1相关度是文档的得分

2得分受关键字在文档中出现的位置和次数等影响

3利用boost影响lucene查询结果的排序,通过设置Document的Boost来影响文档的权重.Document.setBoost(float)默认值为1.0f,值越大得分越高

影响相关度的得分

 1 Document的boost属性:Document.setBoost(float boost)

2 Field的boost属性:Field.setBoost(float boost)

3 查询时指定:MultiFieldQueryPaeser(String[]fields.Analyzer analyzer,Map boosts)

按指定字段排序

public Sort(SortField field)

public Sort(SortField[] fields)

过滤器

RangeFilter可以对搜索出来的结果进行过滤

查询对象

 QueryParser 和MultiFieldQueryParser

TermQuery   关键词查询

RangeQuery   范围查询

WildcardQuery

PhraseQuery   短语查询

短语查询例

public void add(Term term,int position)

public void setSlop(int s )

add(new Term("name","lucene",1));

add(new Term("name","教程",3));

代表搜索的是"Lucene? 教程"   ?表示中间隔一个词

setSlop(2)这两个词中间可以最多隔2个词如果指定了多个词,则是各个词之间的隔的数量的和

 

 

BooleanQuery布尔查询

public void add(Query query, Occur occur)

Occur 用于表示布尔查询子句关系的类,包括:

Occur.MUST,Occur.MUST_NOT,Occur.SHOULD。

 

1,  MUST和MUST:取得连个查询子句的交集。

2,  MUST和MUST_NOT:包含MUST并且查询结果中不包含MUST_NOT的检索结果。

3,  SHOULD与SHOULD,表示“或”关系,最终检索结果为所有检索子句的并集。

 

使用时注意:

1,  MUST和SHOULD:此时SHOULD无意义,结果为MUST子句的检索结果。

2,  MUST_NOT和MUST_NOT:无意义,检索无结果。

3,  MUST_NOT和SHOULD:此时SHOULD相当于MUST,结果同MUST和MUST_NOT。

 

4,  单独使用SHOULD:结果相当于MUST。

5,  单独使用MUST_NOT:无意义,检索无结果。

查询语法

要使用QueryParser与MultiFieldQueryParser进行解析。

指定默认的组合关系。

“+”与“-”:表示后面的条件是“MUST”,还是“MUST_NOT”

“AND”:

“OR”:

“NOT”:

“+”、“-”与“AND”、“OR”同时使用时:

可以使用括号“(”和“)”,对逻辑进行组合

 

private CompassConfiguration cfg=new CompassConfiguration("/compass.cfg.xml");

 private Compass compass=cfg.buildCompass();

 

public void save(Article article){

   CompassSession session=compass.openSession();

   CompassTransaction tx=null;

    try{

   tx=session.beginTransaction();

   session.create(article);

tx.commit();

}catch(Exception e){

  throw new RuntimeException(e);

}finally{

session.close();

}

}

配置高亮器

高亮就是在关键字的前后分别加上前缀和后缀

   代码 String ht=ht.hightlighter(i).fragment("title");

  如果进行高亮的属性没有出现相应的关键字,则返回null

 

   前缀和后缀的默认值<b>和</b>也可以进行修改,配置key在compass文档

  

设置默认highlighter的前缀:"compass.engine.highlighter.default.formatter.simple.pre"

设置默认highlighter的后缀:"compass.engine.highlighter.default.formatter.simple.post"

 

文章来源:http://www.xinxilong.com

作者:不详 来源:网络
相关评论
发表我的评论
  • 大名:
  • 内容:
  • 论坛群发工具(www.xinxilong.com) © 2008 版权所有 All Rights Resverved.
  • Email:433168@qq.com 沪ICP备12025887号
  • Powered by 论坛群发大师