2011-03-11 39 views
0

這是通過NHibernate.Search命名空間與Lucene一起使用來使用Lucene的問題。如何使用索引配置tolkenizers並使用Lucene和Nhibernate進行搜索

我索引的一個標題在指數:實習醫生格蕾

Title : "Grey's Anatomy" 

通過使用盧克,我看到那個標題是越來越切分分爲:

Title: anatomy 
Title: grey 

現在,我得到一個結果,如果我搜索:

"grey" or "grey's" 

但是,如果我搜索「灰色」那麼我什麼也得不到。

我想「灰色」返回結果。我想這可能是任何帶有撇號的單詞的問題。

因此,這裏有一些問題:

  1. 我是正確的思維我既可以通過指數時改變的東西解決這個問題(所以,改變tolkenizer ??)或者改變它查詢時間(查詢解析器?)
  2. 如果有解決方案,有人可以提供一個小代碼示例嗎?

感謝

回答

1

如果您使用Lucene的經典詞彙搜索,然後灰色它最有可能不顯示的結果,除非你是一個不錯的標記化工作提供省時,所以從我看到它,你有2個選擇或第三個組合他們:

  1. 使用Stemmer索引數據和查詢。 Stemmers速度很快,您總是可以找到Porter's stemmer somewhere in Google的實現。問題是當你尋找不同的語言。
  2. 使用模糊查詢。使用模糊查詢,您可以設置要從搜索詞中「離開」的編輯距離。問題在於,因爲使用版本距離(即Lehvenstein)的兩個單詞「接近」並不意味着它們是相同的,但是應該通過將編輯距離設置爲2來解決Gray和Gray和Grays的問題

我認爲你將能夠找到Porter Stemmer的一個體面的實施,這是很好的權利here

希望我能幫上忙!

+0

+1哇,偉大的答案大衛!謝謝!實際上我已經使用了距離爲0.5的模糊查詢(只是一個隨機選擇的值),所以也許增加這將有所幫助。至於Stemmer ...在代碼中我會實現這一點?再次感謝 – andy 2011-03-13 22:32:33

+0

非常感謝評論,我更新了答案以添加一些額外的鏈接。 – 2011-03-14 06:38:53