hibernate search索引的问题

xietingyan 2012-12-08 01:33:58
小弟有个问题请教一下
有一个HtmlMaterialBean,有一个ColumnNodeBean,他们的关系
@Indexed(index="htmlMaterialBean")
public class HtmlMaterialBean {
@DocumentId
private String htmlId;
@Field(name="title",store=Store.NO,index=Index.TOKENIZED, analyzer = @Analyzer(impl=ChineseAnalyzer.class))
private String title;
@Field(name="htmlCode",store=Store.NO,index=Index.TOKENIZED, analyzer = @Analyzer(impl=ChineseAnalyzer.class))
private String htmlCode;
private ColumnNodeBean columnNodeBean;
其他代码省略......
}

public class ColumnNodeBean{
private String nodeId;
private String nodeName;
}

<class name="material.bean.HtmlMaterialBean" table="material_html"
dynamic-update="true" dynamic-insert="true" lazy="true">
<cache usage="read-write" />
<id name="htmlId" type="java.lang.String" column="html_id">
<generator class="util.UniqueIdGene" />
</id>
<property name="title" type="java.lang.String" column="title">
</property>
<property name="htmlCode" type="java.lang.String" column="html_code" lazy="true">
</property>
<many-to-one name="columnNodeBean" class="columnnode.bean.ColumnNodeBean" lazy="proxy" column="column_node_id" cascade="none" ></many-to-one>
</class>

大致关系如上,一个节点下有若干条html素材。
如果只用关键词去检索目前是没有问题,比如我检索方法
public List<HtmlMaterialBean> fullTextSearchForList(String keyWord,String columnNodeId,int pageNum, int pageSize) throws DaoException {
FullTextSession fullTextSession = Search.getFullTextSession(getSession());
String[] keyWords = null;
if(keyWord!=null && keyWord.contains(" ")){
keyWords = keyWord.split(" ");
}else
keyWords = new String[]{keyWord};
BooleanQuery booleanQuery = new BooleanQuery();
MultiFieldQueryParser queryParser = new MultiFieldQueryParser(
new String[]{"title","htmlCode"},new ChineseAnalyzer());
//QueryParser columnParser = new QueryParser("columnNodeId", new ChineseAnalyzer() );
try{
for(String key: keyWords){
if(key!=null && key.trim().length()>0)
booleanQuery.add( queryParser.parse(key), Occur.SHOULD);
}
//booleanQuery.add( columnParser.parse(columnNodeId), Occur.SHOULD);
} catch (ParseException e) {
throw new DaoException(e);
}
Query query = fullTextSession.createFullTextQuery(booleanQuery, HtmlMaterialBean.class,ColumnNodeBean.class);
//query.setMaxResults(2);
List result = query.list();
this.releaseSession(fullTextSession);
return result;
}

目前就是想根据columnNodeBean的nodeId,根据节点ID区分节点来检索。要怎么实现还请各位指点一二。E文文档看的一头雾水~
...全文
31 点赞 收藏 回复
写回复
回复

还没有回复,快来抢沙发~

发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告