2012-07-27 39 views
1

什麼是一個很好的Lucene分析器,用於混合文本和不同源代碼的文檔?例如,我希望「C」和「C++」被視爲不同的單詞,並且我希望Charset.forName("utf-8")在類名稱和方法名稱之間拆分,並且要將參數視爲一個或兩個單詞。什麼是用於文本和源代碼的好Lucene分析器?

我想看一個很好的示例數據集是StackOverflow本身。我相信StackOverflow使用Lucene.NET進行搜索;它是否使用股票分析器,還是它已經大量定製?

+1

你有沒有看:http://lucene.apache.org/solr/api-4_0_0-ALPHA/org/apache/solr/analysis/WordDelimiterFilterFactory.html?它適用於Solr,但您可以使用相同的技巧來定義您想要如何分割令牌...... – condit 2012-08-02 18:21:48

回答

0

您可能最好使用WhitespaceTokenizer並對其進行自定義以去除標點符號。例如,除了'+',' - '之外,我們除去所有的puncutation,以便諸如C++等的詞被留下,但是開始和結束的引號以及括號等都被留下。實際上,對於這樣的事情,您可能需要使用不同的標記器添加文檔兩次以捕獲文檔的不同部分。即一次使用StandardTokenizer,一次使用WhitespaceTokenizer,在這種情況下,StandardTokenizer將分割你的所有代碼,例如,在類和方法名稱之間,因爲空白字符會提取諸如C++之類的字詞。顯然,它的種類取決於語言,但例如, Scala允許在方法名稱中使用一些標點符號。

相關問題