2011-03-10 17 views
2


我想使用Lucene的字典和拼寫檢查類,使Lucene自動完成,但迄今爲止只能成功地使其工作的單項。Lucene自動完成與多個單詞使用瓦特過濾器

我搜索了一下,發現我們需要使用瓦矩陣過濾器來完成工作..有人可以使用Lucene的經驗告訴我一個辦法嗎?

我需要的是它必須生成帶有短語自動填充的單詞。例如,如果我有一個這樣的文檔:「這是一個長篇大論,其中有太多的文字」,那麼我應該能夠產生像「長線」,「長篇大論」,「多單詞「等...

可能嗎?

謝謝。

+0

任何事情的最大長度? – Shrinath 2011-03-15 05:09:21

+0

可能的重複[如何在Lucene中查詢自動完成/建議?](http://stackoverflow.com/questions/120180/how-to-do-query-auto-completion-suggestions-in-lucene) – 2012-03-11 19:04:20

+0

請參閱http://stackoverflow.com/questions/24968697/how-to-implements-auto-suggest-using-lucenes-new-analyzinginfixsuggester-api/25301811#25301811瞭解如何使用Lucene自動完成的完整示例。 – 2014-08-14 07:21:22

回答

0

writer = new IndexWriter(dir,
new ShingleAnalyzerWrapper(new StandardAnalyzer(
Version.LUCENE_CURRENT,
Collections.emptySet()),3),
false,
IndexWriter.MaxFieldLength.UNLIMITED);

該做的工作對我來說...

+2

嗨,你是如何得到這個工作的?我一直在試圖獲得多個詞你的意思是建議功能。你能概述你爲實現這個目標而採取的步驟,或者更好地發佈更多的代碼嗎? – Naz 2012-03-08 20:30:23

0

您可以編寫自己的分析在繼承Lucene.Net.Analysis.Analyzer類實現的TokenStream功能。有ü可以用這個shingleFilter從的TokenStream碼流多字得到:

public override Lucene.Net.Analysis.TokenStream TokenStream(String fieldName, System.IO.TextReader  
reader) 
    { 
     Lucene.Net.Analysis.TokenStream tokenStream = new  
     Lucene.Net.Analysis.Standard.StandardTokenizer(Lucene.Net.Util.Version.LUCENE_30, reader); 
     tokenStream = new Lucene.Net.Analysis.Shingle.ShingleFilter(tokenStream, maxShingleSize); 
     return tokenStream; 
    } 

最大瓦尺寸識別多字單元