2012-10-23 14 views
10

Mam stronę internetową, że treść (HTML) jest generowana przy użyciu ASP.NET C# z bazy danych SQL Server.Tworzenie funkcji wyszukiwania w ASP.NET

Teraz chcę dodać funkcję wyszukiwania w witrynie, aby użytkownicy mogli przeszukiwać zawartość. Pojawi się strona wyników z wynikami.

Jaki jest najlepszy sposób na zrobienie tego?

+0

Jakieś inne rozwiązania? – TeaDrinkingGeek

+0

Możesz to zrobić za pomocą niestandardowego wyszukiwania google, istniejących komercyjnych modułów, przy użyciu indeksowania sql, aż do niestandardowego indeksowania. – Aristos

Odpowiedz

2
+0

Co się stanie, jeśli witryna będzie hostowana u dostawcy usług internetowych na współużytkowanym serwerze? Jaka jest najlepsza alternatywa? – TeaDrinkingGeek

+0

W takim przypadku najlepiej jest użyć wyszukiwarki niestandardowej Google. –

+0

Jestem zaskoczony, że nie sugerowałeś napisania strony wyszukiwania przy użyciu ASP.NET? – TeaDrinkingGeek

5

2 najlepszych rozwiązań:

  • Google Custom Search (GCS)
  • SQL Server (ręczny)

GCS:

Tutaj polegać całkowicie na Google. Jeśli indeksują twoją stronę w ciągu 60 dni, to powodzenia. Nie znajdziesz informacji, które nie są przechowywane, publicznie jak strona internetowa. Dlatego wszelkie treści w logowaniu, zapomnij.

Będziesz także polegać na optymalizacji pod kątem wyszukiwarek. jeśli nie zoptymalizujesz tytułów stron, metaopisów itp., wyszukiwanie nie będzie zbytnio przydatne.

klienta SQL Server:

Jeśli umieścisz pełny indeks tekstu na polach danych, można szukać słów kluczowych. Jest to przyzwoite rozwiązanie, ale pamiętaj o indeksach (w przeciwnym wypadku będzie bardzo wolno).

Chciałbym wyszukać "Wyszukiwanie pełnotekstowego SQL Server", aby uzyskać pomoc dotyczącą tego rozwiązania.

Korzyścią jest to, że masz pełną kontrolę i masz dostęp do wszystkiego.

EDIT:

Istnieje oczywiście wiele innych rozwiązań. Sugerowałbym również zajrzeć do Lucene lub niektórych implementacji na Lucene takich jak Solr. Jednak wszystkie funkcje wyszukiwania są zazwyczaj bardzo trudne i czasochłonne, stąd moje pierwsze dwie sugestie.

W firmie, w której pracuję, wcześniej używaliśmy FAST i dzisiaj używamy Apptusa.

EDIT 2:

Dzisiaj radziłbym tylko jedno rozwiązanie: ElasticSearch. To świetne rozwiązanie; łatwa praca z; działa na wszystkich platformach; oparty na ładnym interfejsie API REST i JSONie i działa bardzo dobrze.

0

To trochę trudne, wiedząc, w którym kierunku wolisz iść z funkcją wyszukiwania, i nie wiedząc, które języki preferujesz i są wygodne w użyciu ..

Co powiesz na coś prostego? i korzystać z wyszukiwania hostowanego?

Ta strona tutaj, za darmo, zindeksuje do 1000, a także otrzymasz różnego rodzaju raporty. Wygląda na to, że musisz dodać prosty kod HTML do swojej strony, aby wszystko działało.

Można również ponownie indeksować na żądanie, a także ustawić harmonogram, aby zrobić to za Ciebie. Nie trzeba czekać do Google ..

Strona jest Site Level

+0

Dzięki za alternatywną propozycję wyszukiwania. Pójdę zaryzykować i spojrzeć. – TeaDrinkingGeek

1

Twoje strony są generowane z bazy danych SQL. Myślę, że można bezpiecznie założyć, że odpowiednie dane również znajdują się w SQL DB, a nie w szablonach asp lub C#. Aby przeszukać te dane, można napisać wiele zapytań do bazy danych w oparciu o funkcję contains("search term").

Możesz mieć proste wyszukiwanie, które wykonuje wszystkie te zapytania, a także zaawansowane wyszukiwanie, w którym możesz podać pola wyboru na podstawie zapytań do wykonania w celu zawężenia wyszukiwania.

To miałoby więcej sensu niż wyszukiwanie surowe nad wygenerowaną treścią, imo.

+0

Podejście to, choć technicznie możliwe, przynosi słabe wyniki końcowe, ponieważ ludzie nie myślą tak konkretnie. Wprowadzają wyszukiwany termin i oczekują wariantów i takich, które będą brane pod uwagę. To, co dostajesz, to poszukiwanie, na które ludzie nieustannie się użalają. Skargi przebiegają jak "Szukałem" wędrówki ", ale nie pokazujesz żadnych stron z" wędrówką "w niej" - wszystkie te małe warianty, które zawiera po prostu nie trafiają. Na koniec lepiej jest użyć wyszukiwania pełnotekstowego lub niestandardowego wyszukiwania google, jak powiedzieli inni komentatorzy. – Michael

0

Użyj Google Search

* W miarę możliwości można użyć Sharepoint dla rozwoju strony internetowej i Search jest już tam na każdej stronie internetowej.

1

Jeśli używasz SOL DB Spróbuj Włącz swój własny kod do pola wyszukiwania w nim. Na przykład Tworzę portal video, Szukam filmów o własnym polu wyszukiwania za pomocą następującego kodu,

<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; 
    } 

Utworzyłem auto wypełnia pole. Najważniejsze, że możemy użyć naszego własnego kodu. . .

0

Jeśli twoja zawartość jest przechowywana w bazie danych SQL i musisz szukać jej wewnątrz tego DB - potrzebujesz jakiegoś kreatora zapytań. Jest ich kilka na rynku. Pamiętam Aspose Query i EasyQuery, ale znajdziesz więcej, jeśli google dla "query builder asp.net" lub coś podobnego.