2012-03-15 64 views
3

我正在開發一個ASP.Net MVC3應用程序,它將有幾百個視頻。我想創建一個基於標籤和其他參數(如上傳視頻的用戶類型,視頻日期,視頻類別等)的搜索系統。Lucene.net可以用於基於標籤的搜索系統嗎?

我一直在環顧四周,Lucene.NET看起來非常好全文搜索工具,但我不知道它是否是我的項目的最佳解決方案...我已閱讀教程,他們建議保持搜索索引到最低限度,但也不應該擊中數據庫檢索沒有存儲在搜索索引中的額外數據...

這怎麼可能?讓我們舉個例子:我有一個視頻行(作爲一個概念,它實際上保存在不同的SQL表中),它有視頻ID,視頻名稱,視頻文件名,完整路徑,用戶ID,用戶類型,標籤,創建日期,視頻類別,視頻子類別,視頻位置等...如果我想創建一個lucene搜索索引,我想我將不得不把所有的信息放在那裏,以便以後我可以查詢每個參數,對不對?

這似乎給我的SQL數據庫的副本,但與添加,編輯和刪除Lucene搜索索引文件的過載。這是使用lucene時的標準方案嗎?我已經使用Lucene見過的所有例子都基於一個帖子ID,文章標題和後體..

你覺得呢?你能給我點光明嗎?

+0

這也被稱爲「分面」或「參數」搜索。正如馬克所指出的那樣,這是一個重複,但它可能比用SQL或者SQL連接進行SQL更快。 – 2012-03-15 09:44:42

回答

2

是的,如果你想查詢從Lucene的內部的多個領域(包括像標籤),你需要做的是數據提供給Lucene的。這可能聽起來這是重複的,但它不是冗餘重複 - 這是該數據改制成一個非常不同的佈局 - 索引搜索。

它應該工作正常;它幾乎是如何工作的here on stackoverflow(這是使用lucene.net執行搜索)。

應當注意,然而,幾百不是一個大樣本:坦率地說,你可以做任何你喜歡的方式,它會需要大約相同數量的時間。編寫一個複雜的SQL查詢應該可行,應該像數據庫中的全文搜索一樣工作(這就是stackoverflow的搜索使用的工作方式),就像過濾內存中的對象一樣(在幾百個級別上,您可以輕而易舉地緩存存儲器中除視頻幀以外的所有數據)。

+0

謝謝馬克,當我說有幾百人可能會有幾千人時,它不是數量問題,而是早期階段的正確選擇。 如何將標籤添加到搜索索引?獨立的字符串爲每個標籤或一起在一個字符串? – CSharpLearning 2012-03-15 13:45:57

+0

@CSharpLearning或者應該可以工作(你可以在lucene,IIRC中有多值字段) – 2012-03-15 14:00:17

+0

你可以在lucene中有多個同名的字段。 – Reactormonk 2012-03-15 14:11:15