2012-05-30 8 views
16

Ten artykuł zaproponował mi ogromną ilość informacji:
Implement Lucene on Existing .NET/SQL Server stack with multiple webserversImplementacja Lucene na istniejącym stosie .NET/SQL Server z wieloma serwerami WWW - czy indeksy sklepów w bazie danych?

Chciałbym wynikają z tego, prosząc o pojęciu wdrożenie Lucene Directory, które utrzymują się indeksów w bazie danych (w moim przypadku SQL Server) - jeśli ktokolwiek ma SWAG w zakresie wysiłku, który byłby pomocny.

widzę, że sfera Java ma to (np kompas), i naprawdę mam nadzieję ludzie stackoverflow mogło uznał to? Wszelkie opinie będą mile widziane.

Moja rekrut myślenia jest to, że utrzymująca się indeksów do DB byłoby sposobem rozwiązania dla „dystrybucja” problemu. Więc zamiast implementować komunikację (niemożliwe z mojego oprogramowania z powodu ograniczeń wdrażania) lub planowanie (byłoby ok'ish - ludzie produktu zawsze są zbyt skrupulatni w podejmowaniu decyzji o tym, jak "aktualne" indeksowane dane muszą być), IndexReader ponownie otworzyć () sprawnie zaktualizowałby migawkę indeksu na dowolnym węźle serwera.

Czy to działa, jeśli współbieżność/obciążenie bazy danych nie jest istotą problemu, który jest rozwiązywany? - nasze wykorzystanie koncentruje się wokół ułatwiania różnych analiz danych na polach, co z kolei ułatwia różne formy dopasowywania.

Nasza architektura rozmieszczania/ograniczenia nie pozwalają nam naprawdę nalegać na serwerach dedykowanych ala SOLR, więc to pojęcie dystrybucji została zdyskontowana przez nas.

+0

To nie odpowiada bezpośrednio na twoje pytanie, ale wygląda na to, że ktoś zaimplementował katalog serwera SQL na Javie (używając JDBC). Być może możesz spojrzeć na kod źródłowy, aby oszacować, ile czasu zajmie Ci napisanie. Lub, możesz użyć Solr, jak sugeruje ten artykuł: http://www.chrisumbel.com/article/lucene_solr_sql_server –

+0

Jaka byłaby korzyść z używania Lucene.NET? Dlaczego po prostu nie używasz SQL Server FullText? –

Odpowiedz

0

Ile oczekujesz zmian indeksów? Kiedy chcesz przeczytać w indeksie? (Podczas uruchamiania aplikacji?) Umieszczenie indeksu w bazie danych i "pobranie" go podczas tworzenia indeksu może pochłonąć za dużo zasobów.

Nie wiesz o swoich ograniczeń programowych, ale można mieć wspólną przestrzeń pliki do maszyn (np SMB/NFS akcji lub podobnych, lub nawet rozwiązania SAN oparte)?

0

Byłbym nieco obawiają się problemów z wydajnością z indeksami w db. Spójrz na Elasticsearch. To następca kompasu. Wymaga Java, ale ma bardzo schludny interfejs REST dla twojego rozwiązania .NET. Elasticsearch obsługuje dystrybucję i replikację między kilkoma węzłami. Możesz uruchomić go na węzłach serwera WWW.

0

To rozwiązanie zabije wydajność indeksu, ponieważ musi pobrać go z bazy danych. Gorąco zaleca przesunięcie do nowej/lepszej alternatywy, to SOLR (stosując Solr.NET przykładowo) lub ElasticSearch (stosując NEST)

SOLR jest wysoki na poziomie interfejsu/menedżer indeksów Lucene, o uproszczonej konfiguracji, grupowanie , replikacja itp. rozwiązana dla ciebie. Fajną rzeczą jest to, że jeśli masz jakieś exp. z Lucene, to nie będzie taki duży krok

ElasticSearch jest inne podejście, ale to nie jest trudne do opanowania.