Java 从列表中标识文档中是否存在关键字
我想基于预先确定的列表为Lucene文档创建标记列表 所以,如果我们有一个文本文档 寻找一个有Lucene经验的Java程序员 我们有关键词列表(大约1000项) java、php、lucene、c#[…] 我想确定文档中是否存在Java和Lucene关键字。 仅仅使用java、php或lucene是行不通的,因为这样我就不知道是哪个关键字产生了点击Java 从列表中标识文档中是否存在关键字,java,lucene,Java,Lucene,我想基于预先确定的列表为Lucene文档创建标记列表 所以,如果我们有一个文本文档 寻找一个有Lucene经验的Java程序员 我们有关键词列表(大约1000项) java、php、lucene、c#[…] 我想确定文档中是否存在Java和Lucene关键字。 仅仅使用java、php或lucene是行不通的,因为这样我就不知道是哪个关键字产生了点击 关于如何在Lucene中实现这一点,有什么建议吗?我假设您有一个或多个索引字段,并且希望根据关键字和文档索引项的交集构建标记云 您的问题与突出显示
关于如何在Lucene中实现这一点,有什么建议吗?我假设您有一个或多个索引字段,并且希望根据关键字和文档索引项的交集构建标记云 您的问题与突出显示非常相似,因此同样的想法适用,您可以:
- 重新分析Lucene文档的存储字段
- 用于快速访问文档的存储字段
FullTextSession fts = Search.getFullTextSession(getSessionFactory().getCurrentSession());
Query q = fts.getSearchFactory().buildQueryBuilder()
.forEntity(Offer.class).get()
.keyword()
.onField("id")
.matching(myId)
.createQuery();
Object[] dId = (Object[]) fts.createFullTextQuery(q, Offer.class)
.setProjection(ProjectionConstants.DOCUMENT_ID)
.uniqueResult();
if(dId != null){
IndexReader indexReader = fts.getSearchFactory().getIndexReaderAccessor().open(Offer.class);
TermFreqVector freq = indexReader.getTermFreqVector((Integer) dId[0], "description");
}
您必须记住使用TermVector为字段编制索引。在该字段的hibernate搜索注释中为“是”。看起来TermVector可能就是这里的票证。我正在使用Hibernate搜索,所以我将看看是否可以在这种情况下使用此功能