2010-10-06 60 views
20

剛開始使用Lucene.Net。我使用標準分析器對100,000行進行了索引,運行了一些測試查詢,並注意到如果原始詞彙是單數的,則多個查詢不會返回結果。我瞭解雪球分析儀增加了支持支持,這聽起來不錯。但是,我想知道是否有任何缺點與雪球超過標準?我是否因此而失去任何東西?有沒有其他的分析儀可以考慮?Lucene標準分析器vs雪球

+0

如果您使用雪球分析儀,您應該得到單數/複數的結果,因爲雪球會將它們歸一化爲相同的形式。你確定你使用相同的分析器來創建索引並查詢它嗎? – Skarab 2010-10-10 11:03:44

回答

18

是的,通過使用諸如雪球之類的詞幹,你正在丟失關於文本原始形式的信息。有時候這會很有用,有時候不會。例如,Snowball會將「組織」變成「器官」,因此對「組織」的搜索將返回帶有「器官」的結果,而不會有任何計分處罰。

這是否適合您取決於您​​的內容以及您支持的查詢類型(例如,搜索非常基本,還是非常複雜的用戶,並且使用您的搜索來準確地篩選結果)。你也可能想看看不那麼積極的詞幹,如KStem

+0

我剛想通了,你也可以做一個像這樣的「袋鼠〜」這樣的模糊搜索,它會返回這個單詞的單數形式,儘管它似乎需要更長的時間來處理查詢。 – alchemical 2010-10-06 19:02:39

+0

@alchemical:我真的會建議不要這樣做。 〜是一個非常慢的操作符,如果你的用戶做了像搜索一個短語的東西,你有點擰。爲什麼「袋鼠」被存儲爲「袋鼠」這麼糟糕? – Xodarap 2010-10-06 21:49:00

+0

好的,這是很好的知道 - 使用KStem你需要Solr嗎?你需要使用Lucene源代碼來整合它嗎? – alchemical 2010-10-06 21:59:42

4

我剛完成一個分析器,執行lemmaization。這與詞幹類似,除了它使用上下文來確定單詞的類型(名詞,動詞等)並使用該信息來推導詞幹。它還保留索引中單詞的原始形式。也許my library可以對你有用。不過,它需要Lucene Java,而且我不知道任何C#/ .NET的解迷器。

6

snowball分析儀會增加您的召回率,因爲它比標準分析儀更具侵略性。所以你需要評估你的搜索結果,看看你的數據是否需要增加recall or precision