2009-08-10 11 views
7

Wydaje się, że SQLite3 zawiera trzy różne wyszukiwarki pełnotekstowe, o nazwach FTS1, FTS2 i FTS3. Dokumentacja dostępna na stronie internetowej wspomina, że ​​FTS1 jest stabilny, FTS2 jest w fazie rozwoju i że powinieneś używać FTS2. Przykłady Używam w Internecie FTS3, który jest w CVS, a nie udokumentowany w porównaniu z FTS2. Żadna z wyszukiwarek pełnotekstowych nie ma połączonego źródła, tak blisko, jak się da.Którego pakietu wyszukiwania pełnotekstowego należy użyć dla SQLite3?

Moje pytanie: który z tych trzech silników, jeśli w ogóle, powinienem użyć do indeksowania pełnotekstowego w SQLite? Czy zamiast tego powinienem po prostu użyć narzędzia innej firmy, takiego jak Sphinx, lub niestandardowego rozwiązania w Lucene?

Odpowiedz

4

Ostatnio zajrzałem także do rozwiązań pełnotekstowych. Wygląda na to, że SQLite nie ma obecnie de facto wyboru. Bez względu na to, co wybierzesz, nieuniknione jest, że będziesz musiał ponownie go skompilować, ponieważ dojrzewają różne rozwiązania FT2, FT3 itd. Więc zgryźmy kulę i przyjmijmy, że będziesz musiał zrobić więcej w przyszłości, aby nadążyć za zmianą technologii pełnego tekstu.

Sphinx Search nie ma jeszcze wsparcia dla SQLite. Obsługuje teraz tylko MySQL i PostgreSQL (około sierpnia 2009). Musisz więc zhackować własne złącze SQLite lub zmigrować dane SQLite do MySQL lub PostgreSQL, a następnie zindeksować dane za pomocą Sphinx Search. Wydaje mi się, że ktoś pracuje nad poprawką Sphinx Search, by obsługiwać Firebird, więc może nie jest tak trudno, jeśli chcesz zwinąć rękawy.

Należy również pamiętać, że wyszukiwanie Sphinx ma pewne ograniczenia dotyczące przyrostowego dodawania danych do indeksu. Powinieneś poświęcić około godziny na czytanie dokumentu, zanim zdecydujesz się go użyć.

Nie znam żadnego bezpośredniego sposobu indeksowania danych SQLite w Lucene. Prawdopodobnie będziesz musiał napisać własny kod, aby przetworzyć partie danych SQLite, dodając wiersze do indeksu Lucene pojedynczo. To wydaje się być użycie Lucene bez względu na bazę danych.


zmiana:Solr jest doskonałym towarzyszem dla technologii Lucene. Solr daje tej wyszukiwarce wiele funkcji, w tym możliwość zbiorczego ładowania danych wyników zapytania z dowolnego źródła danych JDBC.

+1

Myślę, że sqlite3 fts3 jest lepsze niż jakiekolwiek rozwiązanie zewnętrzne. Mniej ruchomych części. Przełączanie z fts2 na fts3 nie może być tak trudne, jak integracja Sphinx z jego ograniczeniami aktualizacji lub innymi rozwiązaniami zewnętrznymi. –

+1

@Seun: Zgadzam się - nieco. To prawda, że ​​Sphinx Search wymaga zainstalowania kolejnego oprogramowania, podczas gdy fts3 jest wbudowany w SQLite. Jednak fts3 nie jest wbudowany w domyślne kompilacje, więc musisz sam skompilować SQLite. A fts3 jest typem * wirtualnej tabeli *, musisz wykonać ręczne kopiowanie danych z tabeli źródłowej do tabeli fts3 niezależnie. Ma pewne ruchome części, bez względu na to, jak to robisz. –

+0

FTS3 był częścią oficjalnej biblioteki DLL, podobnie jak FTS4. –

6

Od wersji 3.6.21 FTS3 jest dobrze udokumentowany i zyskał status bardziej oficjalnie widoczny.

FTS3 jest częścią standardowej kompilacji DLL sqlite w systemie Windows, nie ma pewności co do połączonego źródła.

Używamy go do produkcji przez około rok bez żadnych problemów.

Powiązane problemy