2012-10-23 101 views
10

我有一個網站,該內容(HTML)是使用ASP.NET C#從SQL Server數據庫生成的。在ASP.NET中創建搜索功能

現在我想在網站上添加搜索功能,以便用戶可以搜索內容。它會帶出一個結果頁面。

這樣做的最好方法是什麼?

+0

其他解決方案? – TeaDrinkingGeek

+0

你可以使用自定義谷歌搜索,現有的商業模塊,使用SQL索引,以達到自定義索引。 – Aristos

回答

2
+0

如果網站在共享服務器上的ISP上託管,那麼該怎麼辦?最好的選擇是什麼? – TeaDrinkingGeek

+0

在這種情況下,使用Google自定義搜索是最佳選擇。 –

+0

我很驚訝你沒有建議使用ASP.NET編寫搜索頁面? – TeaDrinkingGeek

5

2.最佳解決方案:

  • 谷歌自定義搜索(GCS)
  • SQL Server(手動)

GCS:

在這裏,您將完全依賴於谷歌。如果他們在60天內爲您的網頁編制索引,那麼祝你好運。你不會找到沒有存儲的信息,像公共網頁一樣。因此,登錄內的任何內容都會忘記它。

您還將依靠搜索引擎優化。如果您不優化頁面標題,元描述等,那麼搜索將不會有太大用處。

自定義的SQL Server:

如果你把你的數據字段全文索引,您可以搜索關鍵字。這是一個體面的解決方案,但要記住索引(否則它會很慢)。

我會搜索「SQL Server全文搜索」以獲得有關此解決方案的幫助。

這裏的好處是你有完全的控制權,你可以訪問一切。

編輯:

當然還有許多其他的解決方案。我也會建議看看Lucene,或者一些在Lucene之上的實現,比如Solr。然而,所有的搜索功能通常都非常困難且耗時,從今以後我的前兩個建議。

在我工作的公司,我們以前使用FAST,並且今天使用Apptus。

編輯2:

今天我想只有一個解決方案建議:ElasticSearch。這是一個很好的解決方案;易於使用;適用於所有平臺;基於一個很好的REST api和JSON,並且表現非常好。

0

知道您希望繼續使用搜索功能的哪個方向,並且不知道您偏好哪種語言/並且使用舒適,這有點困難。

那麼,簡單的事情呢?並使用託管搜索?

這個網站在這裏免費索引到1000,你也可以得到各種各樣的報告。看起來你只需要添加一些簡單的HTML到你的網站,以使其工作。

您也可以根據需要重新編制索引,並且還可以爲您制定計劃。無需等待谷歌..

該網站是Site Level

+0

感謝您的替代建議搜索。我會冒險去看看。 – TeaDrinkingGeek

1

您的網頁是從SQL數據庫生成的。我認爲它可以安全地假設相關數據也位於SQL數據庫中,而不是asp模板或C#代碼。要搜索該數據,您可以根據contains("search term")函數向數據庫寫入多個查詢。

您可以執行所有這些查詢的簡單搜索,也可以提供高級搜索,您可以根據執行哪些查詢來提供複選框來優化搜索。

這比對生成的內容imo進行原始搜索更有意義。

+0

這種方法雖然在技術上可行,但往往會產生較差的最終結果,因爲人們並不認爲具體條件。他們輸入一個搜索詞,他們期望變體等被考慮。你得到的是一種人們不斷在尋求的搜索。這些投訴的運行方式類似於「我搜索'徒步旅行'」,但您不會在其中顯示任何「徒步旅行」頁面 - 所有這些包含的小變體都不會觸及。最後,您最好使用全文搜索或自定義谷歌搜索,正如其他評論員所說。 – Michael

0

使用谷歌搜索

*如果可能的話,你可以使用的Sharepoint爲網站開發和搜索已經在那裏每個網站。

1

如果您使用的是SOL DB試着啓用它在搜索框中自己的代碼。例如我創建一個視頻門戶,我對我自己的搜索框中通過使用下面的代碼搜索視頻,

<script type="text/javascript"> 
    $(document).ready(function() { 
     SearchText(); 
    }); 
    function SearchText() { 
     $(".autosuggest").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url: "Home.aspx/GetAutoCompleteData", 
        data: "{'username':'" + document.getElementById('txtSearch').value + "'}", 
        dataType: "json", 
        success: function (data) { 
         response(data.d); 
        }, 
        error: function (result) { 
         alert("Error"); 
        } 
       }); 
      } 
     }); 
    } 

    $(".autosuggest").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: "Home.aspx/GetAutoCompleteData", 
       data: "{'username':'" + document.getElementById('txtSearch').value + "'}", 
       dataType: "json", 
       success: function (data) { 
        response(data.d); 
       }, 
       error: function (result) { 
        alert("Error"); 
       } 
      }); 
     } 
    }); 
</script> 

    /// <summary> 
    /// To AutoSearch. . . 
    /// </summary> 
    /// <param name="userName"></param> 
    /// <returns></returns> 
    public List<string> GetAutoComplete(string userName) 
    { 
     List<string> lstStr = new List<string>(); 
     sqlCon = new SqlConnection(strCon); 
     sqlCmd=new SqlCommand("select DISTINCT OldFileName from UploadedVideo where OldFileName LIKE '%'[email protected]+'%'", sqlCon); 
     sqlCon.Open(); 
     sqlCmd.Parameters.AddWithValue("@SearchText",userName); 
     SqlDataReader reader=null; 
     reader = sqlCmd.ExecuteReader(); 
     while(reader.Read()) 
     { 
      lstStr.Add(reader["OldFileName"].ToString()); 
     } 
     return lstStr; 
    } 

我創建了一個自動完成框。這裏主要的是我們可以使用我們自己的代碼。 。 。

0

如果您的內容存儲在SQL數據庫中,並且您需要在該數據庫中搜索它 - 那麼您需要某種查詢構建器。市場上有少數幾種。我可以記住Aspose Query和EasyQuery,但是如果google查詢「query builder asp.net」或類似的東西,你會發現更多。