2011-07-25 18 views
8

Mam plik PDF (kilkaset). Nie mają odpowiedniej struktury ani nie mają określonych pól. Wszystko, co mają, to dużo tekstu.Jak indeksować pliki PDF i wyszukiwać słowa kluczowe?

Próbuję zrobić:

indeksować pliki PDF i szukać niektórych słów kluczowych w stosunku do indeksu. Jestem zainteresowany znalezieniem, jeśli to konkretne słowo kluczowe jest w dokumencie PDF, a jeśli tak, chcę wiersz, w którym znaleźć słowo kluczowe. Jeśli szukałem hasła "Google" w dokumencie PDF z tym określeniem, chciałbym zobaczyć "Google to świetna wyszukiwarka", czyli wiersz w pliku PDF.

Jak postanowiłem zrobić:

użyć SOLR lub Whoosh ale SOLR szuka dobre dla wbudowanej obsługi PDF. Wolę kodować w Pythonie, a Sunburst to opakowanie na SOLR, które lubię. Przykładowy projekt przykładowy SOLR ma jakiś plik schematu oparty na porównaniu cenowym. Teraz nie jestem pewien, czy mogę użyć SOLR, aby odpowiedzieć na mój problem.

Co proponujesz? Wszelkie dane wejściowe są doceniane.

+1

Czy proponujesz indeksować każdy plik PDF za pomocą każdego wyrazu lub wyrażenia, które on zawiera? Jeśli nie, w jaki sposób wygenerujesz listę słów kluczowych? – smci

+0

Mam faktycznie listę słów kluczowych. Chcę zindeksować całą treść w pliku PDF, a następnie uruchomić wyszukiwanie według tego indeksu za pomocą moich słów kluczowych. – ThinkCode

Odpowiedz

5

Myślę, że Solr odpowiada Twoim potrzebom.

Funkcja "Podświetlanie" jest tym, czego szukasz. Aby to zrobić, musisz indeksować i przechowywać dokumenty w indeksie lucene.

Funkcja podświetlania zwraca snipped, gdzie jest wyszukiwany tekst.

Spójrz na to: http://wiki.apache.org/solr/HighlightingParameters

+0

Jak włączyć/wyświetlić "podświetlanie" w wynikach wyszukiwania w szablonie domyślnym? Teraz widzę tylko XML (autor, content_type, id, last modified i title). Dzięki! – ThinkCode

+0

podświetlanie nedds TermVecors http://wiki.apache.org/solr/TermVectorComponent - więc musisz ponownie indeksować aktywowany TermVectorComponent –

+0

Wielkie dzięki, teraz wyświetla cały tekst z pliku PDF. I copyField'ed cały tekst do pola "tekst". Teraz kiedy szukam, wyświetla cały tekst, podczas gdy ja chcę tylko linię z "tekstu", który ma pasujący ciąg. Mój plik schematu: http://pastebin.com/Cp1CsZ9Z – ThinkCode

2

kiedyś rozwiązać to poprzez konwersję plików PDF do tekstu z mediów jako pdftotext (pdftohtml będzie również działać jak sądzę), generując „cache” niektórych rodzajów. Następnie używając jakiegoś grep przeszukałem pamięć podręczną pliku tekstowego pod kątem słów kluczowych.

To trochę różni się od proponowanego rozwiązania, ale mogę sobie wyobrazić, że możesz wywołać to również w Pythonie.

+1

Dzięki Tim. Twoje rozwiązanie było moim pierwszym podejściem, dopóki nie znalazłem SOLR.SOLR robi to na żądanie i znacznie szybciej. Zastanawiam się, czy SOLR może być użyty w moim kontekście i myślę, że mogę! – ThinkCode

+0

OK, brzmi dobrze :) Być może to rozwiązanie "offline" może być przydatne dla kogoś, kto czyta to ... – Tim

4

Innym zalogowany/samodzielna rozwiązanie:

Powiązane problemy