2010-01-12 18 views
8

Pracuję nad projektem bazy wiedzy przy użyciu SQL Server 2008 Full Text Search Engine. Projekt zawarty w artykułach i plikach, w których każdy artykuł ma wiele plików. W tych artykułach cała treść to czysty html.Jak ignorować znaczniki html w Sql Server 2008 Wyszukiwanie pełnotekstowe

Właśnie z powodzeniem stworzyłem katalog pełnotekstowy i indeks na serwerze SQL Server 2008, a moja baza danych jest zgodna z wersją 10.

Oto moje pytania:

1) Czy to możliwe, aby ignorować znaczniki HTML, teksty zawierające bardziej wyraźnie w „< ...>”, podczas poszukiwania w tych artykułach, bo jeśli chciałbym, aby szukać div , tabela itp. nie powinno być zwracanych wyników?

2) Artykuły będą aktualizowane w dowolnym momencie, więc pełny indeks tekstowy musi zostać zaktualizowany po włożeniu nowego rekordu. Czy wystarczy ustawić tylko "ZMIANY ŚCIEŻKI AUTOMATYCZNEJ" podczas tworzenia pełnego katalogu tekstowego?

3) Możemy korzystać z funkcji FILESTREAM poniżej, czy SQL Server 2008 ma dobrą wydajność na plikach przy użyciu pełnotekstowego indeksu? Jakie konkretne typy dokumentów obsługuje indeksowanie SQL Server 2008?

Pozdrowienia

+0

Hi friend, myślę, że najlepszym rozwiązaniem jest zastąpienie HTML z regex«<(.|\n)*?>»z czekiem montażowej sql clr ten link http://justgeeks.blogspot.com/2008/08/adding-regular-expressions-regex-to-sql.html –

Odpowiedz

-1

Proszę sprawdzić poniższe:

1) w SQL Server Full Text, możemy określić słowa ignorowane/stopwords. Możesz edytować plik World Noise, a następnie przebudować katalog. Możesz więc umieścić wszystkie znaczniki html jako szum. Proszę sprawdzić

http://msdn.microsoft.com/en-us/library/ms142551.aspx

2) z toru zmienia się automatycznie obejmują zmiany w aktualnej wyszukiwanie pełnotekstowe, ale ranking tych nowo dodanym art ulega zmianie od poprzedniego. Tak więc dopóki nie zsynchronizujesz indeksu głównego, podda się ono w górę i w dół z rankingiem.

3) Z tego co wiem, możemy zaimplementować niestandardowe filtry, programy macierzyste i łamacze wyrazów i można je podłączyć do wyszukiwania pełnotekstowego SQL Server. Domyślnie może to nie być kompletna lista, ale dokument i dokument.

Więcej informacji na temat SQL Server 2008 pełny tekst wyszukiwania proszę sprawdzić:

http://technet.microsoft.com/en-us/library/cc721269.aspx

+1

Stopwords nie powinny filtrować znaczników html. Jeśli istnieje tekst taki jak "

"co podam jako stopword do filtrowania go w taki sposób," formularz "," "itd.? – Myra

+0

Myślałem, że chcesz po prostu zignorować podstawowe tagi html. W tej sytuacji chciałbym zarekomendować wdrożenie programu Custom Word Breaker i Stemmer poprzez implementację IWordBreaker, IStemmer i, jeśli to konieczne, interfejsów IFilter, a następnie podłączenie do twojego serwera sql. –

+0

Czy podałeś przykład implementacji wspomnianych interfejsów? – Myra

26

jest filtr dla plików .htm i .html.

aby sprawdzić, czy masz w biegu zainstalowaniu filtra to sql:

SELECT * FROM sys.fulltext_document_types 

Warto zobaczyć:

.htm E0CA5340-4534-11CF-B952-00AA0051FE20 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\nlhtml.dll 12.0.6828.0 Microsoft Corporation 

.html E0CA5340-4534-11CF-B952-00AA0051FE20 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\nlhtml.dll 12.0.6828.0 Microsoft Corporation 

tak, to czy można zamienić kolumny artykułów do varbinary (max), a następnie możesz dodać na nim indeks pełnotekstowy i określić typ dokumentu ".html”

raz indeks został wypełniony, można sprawdzić słowa kluczowe, za pomocą tego sql:

SELECT display_term, column_id, document_count 
FROM sys.dm_fts_index_keywords 
(DB_ID('your_db'), OBJECT_ID('your_table')) 
+0

Twój pierwszy awans ode mnie :) – Myra

+0

Nie mogę dodać pełnego indeksu tekstowego na kolumnie varbinary (max). Nie mogę również dowiedzieć się, jak określić typ dokumentu (jeśli ustawię go zamiast tekstu) – Radderz

+0

Wygląda na to, że SQL Management Studio jest nieco ograniczone. Indeks pełnotekstowy może być utworzony zamiast zwykłego polecenia SQL, a kolumny obliczeniowe są bardzo użyteczne w tym procesie; patrz punkt 2 zaakceptowanej odpowiedzi tutaj: https://stackoverflow.com/questions/17179772/getting-top-n-latest-entries-from-sql-server-full-text-index – Radderz

Powiązane problemy