2011-11-09 91 views
1

我有一個搜索MSSQL數據庫索引文本的應用程序。我目前的搜索功能正常工作。我只需要顯示搜索結果和周圍的搜索字詞(如谷歌)。我能找到的唯一工具就是Lucene的文本高亮顯示。我從這個問題讀到它:Displaying sample text from the Lucene Search Results。我還沒有看過Lucene很長時間,但我猜我必須爲每個搜索命中創建文檔。我應該只使用Lucene進行突出顯示嗎?

我在想,如果我想要做什麼甚至可能與Lucene,以及它是否矯枉過正使用這樣的工具爲我的目的矯枉過正。有沒有其他工具可以/應該用於此?

回答

2

這取決於您試圖突出顯示的文本的大小,但如果它相當小,則可以在搜索後端頂部使用Lucene高亮功能。有關更多信息,請參見Highlighter文檔。

如果這對於你來說不夠快(如果你想突出顯示大塊),Lucene可以通過使用term vectors來使突出顯示更快,但是這需要你將你的後端從MSSQL移動到Lucene 。

+0

謝謝我會檢查這些。 – Zip184

1

這將是矯枉過正&:Lucene是一個完整的搜索/索引引擎,包含詞幹,評分和其他內容。這可能比你在做什麼更好,但這取決於你的目標。

如果你只是做簡單的關鍵字高亮顯示,考慮一個正則表達式插入高亮標記。

1

如果已經可以得到周圍文字中的關鍵詞,這真是你需要的唯一的事情,那麼,Lucene是一個矯枉過正 - 只是環繞你的關鍵字高亮標記。然而,在大多數情況下

但在大多數情況下,隨着時代的推移人們開始的其他高級選項的思維,如詞幹(如果你搜索「亮點」,你還可以找到「突出」和「熒光筆」),同義詞搜索,語言檢測等如果你曾經想過你可能需要這樣的東西,或者甚至你沒有準備好算法來找到帶有關鍵字的文本片段(周邊文本),我強烈建議你跳入Lucene世界。我能想到的最佳選擇是索引MSSQL中的所有文本字段,並將所有文本搜索都基於Lucene。

如果您害怕使用Lucene編碼,您可以使用Solr - 基於Lucene的web服務器,它具有極其廣泛的功能,可以通過XML文件輕鬆配置。 Solr具有 - 簡單的網頁和一些編程接口(用於Java的Solrj)。

+0

嗯,自己編寫這個邏輯的唯一問題是我正在用ContainsTable和FORMSOF(INFLECTIONAL,xxx)進行SQL索引查詢,我相信這比僅僅使用正則表達式查找關鍵字更先進。我想我真的應該使用我用來執行搜索的相同邏輯,因爲我是爲了突出顯示。我也希望我不必編寫功能來創建實際的摘要字符串。我真的不能在這方面投入太多時間,因爲這就是爲什麼我一直在尋找一些API來爲我做這件事。 – Zip184

+0

這就是爲什麼我說,最有可能你需要Lucene - 'FORMSOF'與Lucene中的詞幹非常相似,但是'FORMSOF'不能爲你提供突出顯示,而Lucene卻可以。 – ffriend