2012-02-13 31 views
0

我想基於預定列表爲Lucene文檔創建標籤列表。從列表中識別文檔中是否存在關鍵字

所以,如果我們有文字

尋找在Lucene的

一個Java程序員有經驗的文檔,我們有關鍵字列表(大約1000項)

的java ,php,lucene,c#[...]

我想確定關鍵字Java和Lucene存在於文檔中。 只是做一個Java或PHP或lucene將無法正常工作,因爲那樣我就不知道哪個關鍵字產生了命中。

關於如何在Lucene中實現這一點的任何建議?

回答

1

是的,這個工作

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.YES領域在該領域的Hibernate Search的註解。

1

我假設您有一個或多個索引字段,並且您想根據關鍵字與文檔的索引條款的交集來構建標籤雲。

你的問題是非常相似的突出,所以方法同樣適用,您可以:

  • 重新分析你的Lucene的文檔存儲領域,
  • 使用term vectors快速訪問您的文件'存儲的字段。

請注意,如果你想使用詞向量,你需要在編譯的時候,讓他們(見Field.TermVector.YES documentationField constructor)。

+0

它看起來像TermVectors可能是這裏的票。我正在使用Hibernate Search,所以我會看看是否可以在此上下文中使用此功能 – Marc 2012-02-14 11:05:29

相關問題