Przejdź do zawartości

Wikipedysta:Maleed/brudnopis-lucene: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
Usunięta treść Dodana treść
→‎Cechy i działanie: odniesienie do artykułu nt. Elastica
Nie podano opisu zmian
Linia 19: Linia 19:
}}
}}


'''Apache Lucene''' – [[Otwarte oprogramowanie|otwartoźródłowa]] [[biblioteka programistyczna]] oferująca funkcje zbierania, indeksowania i wyszukiwania tekstu. Pozwala na budowę m.in. serwisów wyszukiwania tekstu (w tym [[Wyszukiwarka internetowa|wyszukiwarek internetowych]]). Jest rozwijana przez [[Apache Software Foundation]] i wydana na [[Licencja oprogramowania|licencji]] [[Apache License|Apache Software License]]<ref name="lucene4">{{cytuj książkę | imię = Andrzej | nazwisko = Białecki | imię2 = Robert | nazwisko2 = Muir | imię3 = Grant | nazwisko3 = Ingersoll | tytuł = Apache lucene 4 | tytuł tomu = SIGIR 2012 workshop on open source information retrieval | rok = 2012 | strony = 17 | język = en | url = https://pdfs.semanticscholar.org/2795/d9d165607b5ad6d8b9718373b82e55f41606.pdf}} </ref>.
'''Apache Lucene''' – [[Otwarte oprogramowanie|otwartoźródłowa]] [[biblioteka programistyczna]] oferująca funkcje [[Wyszukiwanie informacji|wyszukiwania informacji]] (ang. ''information retrieval'')<ref name="lucene_in_action">McCandless, Michael, Erik Hatcher, i Otis Gospodnetic. Lucene in action: covers Apache Lucene 3.0. Manning Publications Co., 2010. <nowiki>https://livebook.manning.com/book/lucene-in-action-second-edition</nowiki>.</ref>. Pozwala zarówno na zbieranie jak i indeksowania oraz wyszukiwania tekstu, co umożliwia stosunkowo proste dodanie funkcji wyszukiwania tekstu do istniejących serwisów jak i stworzenie serwisów wyszukiwania informacji (w tym [[Wyszukiwarka internetowa|wyszukiwarek internetowych]]). Jest rozwijana przez [[Apache Software Foundation]] i wydana na [[Licencja oprogramowania|licencji]] [[Apache License|Apache Software License]]<ref name="lucene4">{{cytuj książkę | imię = Andrzej | nazwisko = Białecki | imię2 = Robert | nazwisko2 = Muir | imię3 = Grant | nazwisko3 = Ingersoll | tytuł = Apache lucene 4 | tytuł tomu = SIGIR 2012 workshop on open source information retrieval | rok = 2012 | strony = 17 | język = en | url = https://pdfs.semanticscholar.org/2795/d9d165607b5ad6d8b9718373b82e55f41606.pdf}} </ref>.


Biblioteka Lucene pierwotnie była stworzona w języku [[Java]] i oferowała [[Interfejs programowania aplikacji|API]] z poziomu Javy (stąd pozwalała na integrację z aplikacjami Javowymi). Obecnie istnieje zarówno szereg tzw. „[[Wrapper|wrapperów]]” dla innych języków, m.in. dla [[Python|Pythona]] (projekt ''PyLucene''<ref>{{Cytuj |tytuł = Apache Lucene - Welcome to PyLucene |data dostępu = 2019-10-23 |opublikowany = lucene.apache.org |url = http://lucene.apache.org/pylucene/}}</ref> – część projektu Lucene), dla [[Perl]]<nowiki/>a (projekt ''plucene''<ref>{{Cytuj |tytuł = Plucene - A Perl port of the Lucene search engine - metacpan.org |data dostępu = 2019-10-23 |opublikowany = metacpan.org |url = https://metacpan.org/pod/Plucene}}</ref>) czy dla jęz. [[Ruby (język programowania)|Ruby]] (projekt ''Lucene.rb''<ref>{{Cytuj |autor = Andreas Ronge |tytuł = A JRuby wrapper for the Lucene Document Database. Contribute to andreasronge/lucene development by creating an account on GitHub |data = 2018-11-15 |data dostępu = 2019-10-23 |url = https://github.com/andreasronge/lucene}}</ref>) oraz tzw. „[[Port (oprogramowanie)|portów]]” – wersji stworzonych niezależnie od pierwszej implementacji w innych językach programowania a kompatybilnych z nią<ref group="uwaga" name="uwaga_index">W przypadku Lucene'a „kompatybilność” oznacza możliwość odczytu i zapisu tzw. [[Indeks (bazy danych)|indeksu]] Lucene'a.</ref> (należą do nich m.in. ''Clucene''<ref>{{Cytuj |tytuł = CLucene - lightning fast C++ search engine |data dostępu = 2019-10-23 |opublikowany = clucene.sourceforge.net |url = http://clucene.sourceforge.net/}}</ref> napisany w jęz. [[C++]] oraz pucene<ref>{{Cytuj |autor = |tytuł = Pucene / Asapo |data = |data dostępu = 2019-10-23 |opublikowany = asapo.at |url = https://asapo.at/projects/pucene}}</ref> napisany w jęz. [[PHP]]).
Biblioteka Lucene pierwotnie była stworzona w języku [[Java]] i oferowała [[Interfejs programowania aplikacji|API]] z poziomu Javy (stąd pozwalała na integrację z aplikacjami Javowymi). Obecnie istnieje zarówno szereg tzw. „[[Wrapper|wrapperów]]” dla innych języków, m.in. dla [[Python|Pythona]] (projekt ''PyLucene''<ref>{{Cytuj |tytuł = Apache Lucene - Welcome to PyLucene |data dostępu = 2019-10-23 |opublikowany = lucene.apache.org |url = http://lucene.apache.org/pylucene/}}</ref> – część projektu Lucene), dla [[Perl]]<nowiki/>a (projekt ''plucene''<ref>{{Cytuj |tytuł = Plucene - A Perl port of the Lucene search engine - metacpan.org |data dostępu = 2019-10-23 |opublikowany = metacpan.org |url = https://metacpan.org/pod/Plucene}}</ref>) czy dla jęz. [[Ruby (język programowania)|Ruby]] (projekt ''Lucene.rb''<ref>{{Cytuj |autor = Andreas Ronge |tytuł = A JRuby wrapper for the Lucene Document Database. Contribute to andreasronge/lucene development by creating an account on GitHub |data = 2018-11-15 |data dostępu = 2019-10-23 |url = https://github.com/andreasronge/lucene}}</ref>) oraz tzw. „[[Port (oprogramowanie)|portów]]” – wersji stworzonych niezależnie od pierwszej implementacji w innych językach programowania a kompatybilnych z nią<ref group="uwaga" name="uwaga_index">W przypadku Lucene'a „kompatybilność” oznacza możliwość odczytu i zapisu tzw. [[Indeks (bazy danych)|indeksu]] Lucene'a.</ref> (należą do nich m.in. ''Clucene''<ref>{{Cytuj |tytuł = CLucene - lightning fast C++ search engine |data dostępu = 2019-10-23 |opublikowany = clucene.sourceforge.net |url = http://clucene.sourceforge.net/}}</ref> napisany w jęz. [[C++]] oraz pucene<ref>{{Cytuj |autor = |tytuł = Pucene / Asapo |data = |data dostępu = 2019-10-23 |opublikowany = asapo.at |url = https://asapo.at/projects/pucene}}</ref> napisany w jęz. [[PHP]]).
Linia 26: Linia 26:


== Historia ==
== Historia ==
Projekt Lucene został zapoczątkowany przez [[Doug Cutting|Douga Cuttinga]] w roku 1997 jako własny projekt (który – jak przyznaje autor – miał na celu samodoskonalenie się w jęz. [[Java]]<ref name="lucene4"/>). Projekt został opublikowany jako otwarte oprogramowanie w roku 2000 (wersja 0.01)<ref name="early_changelog">https://lucene.apache.org/core/5_0_0/changes/Changes.html#older</ref>. Następnie, w połowie roku 2001, biblioteka została przekazana Fundacji Apache (ASF)<ref name="lucene4"/>. Pierwszym oficjalnym wydaniem ASF była wersja 1.2, opublikowana w październiku 2001<ref name="early_changelog"/>. Od tego czasu wydano kilka dużych wersji (wer. 2 – w roku 2006, wer. 3 – 2009, wer. 4 – 2012, wer. 5 – 2015, wer. 6 – 2016, wer. 7 – 2017 i wer. 8 – 2019<ref>https://archive.apache.org/dist/lucene/java/</ref>). Obecnie biblioteka Lucene (napisana w Javie) jest jedną z części projektu Lucene i jest nazywana ''Lucene-core''. Innymi częściami projektu Lucene są, wspomniane wyżej, narzędzia ''Apache Solr'' oraz ''PyLucene''.
Projekt Lucene został zapoczątkowany przez [[Doug Cutting|Douga Cuttinga]] w roku 1997 jako własny projekt (który – jak przyznaje autor – miał na celu samodoskonalenie się w jęz. [[Java]]<ref name="lucene_in_action"/><ref name="lucene4"/>). Projekt został opublikowany jako otwarte oprogramowanie w roku 2000 (wersja 0.01)<ref name="early_changelog">https://lucene.apache.org/core/5_0_0/changes/Changes.html#older</ref>. Następnie, w połowie roku 2001, biblioteka została przekazana Fundacji Apache (ASF)<ref name="lucene4"/>. Pierwszym oficjalnym wydaniem ASF była wersja 1.2, opublikowana w październiku 2001<ref name="early_changelog"/>. Od tego czasu wydano kilka dużych wersji (wer. 2 – w roku 2006, wer. 3 – 2009, wer. 4 – 2012, wer. 5 – 2015, wer. 6 – 2016, wer. 7 – 2017 i wer. 8 – 2019<ref>https://archive.apache.org/dist/lucene/java/</ref>). Obecnie biblioteka Lucene (napisana w Javie) jest jedną z części projektu Lucene i jest nazywana ''Lucene-core''. Innymi częściami projektu Lucene są, wspomniane wyżej, narzędzia ''Apache Solr'' oraz ''PyLucene''.


== Cechy i działanie ==
== Cechy i działanie ==

Wersja z 11:26, 5 gru 2019


Lucene
Logo Lucene
Logo programu
Autor Apache Software Foundation
Pierwsze wydanie 2000
Aktualna wersja stabilna 8.3.0 – 2 listopada 2019; ponad 4 lata temu[1]
Język programowania Java
System operacyjny Wieloplatformowy
Rodzaj biblioteka programistyczna (indeksowanie i wyszukiwanie danych tekstowych)
Licencja Apache License
Strona internetowa

Apache Luceneotwartoźródłowa biblioteka programistyczna oferująca funkcje wyszukiwania informacji (ang. information retrieval)[2]. Pozwala zarówno na zbieranie jak i indeksowania oraz wyszukiwania tekstu, co umożliwia stosunkowo proste dodanie funkcji wyszukiwania tekstu do istniejących serwisów jak i stworzenie serwisów wyszukiwania informacji (w tym wyszukiwarek internetowych). Jest rozwijana przez Apache Software Foundation i wydana na licencji Apache Software License[3].

Biblioteka Lucene pierwotnie była stworzona w języku Java i oferowała API z poziomu Javy (stąd pozwalała na integrację z aplikacjami Javowymi). Obecnie istnieje zarówno szereg tzw. „wrapperów” dla innych języków, m.in. dla Pythona (projekt PyLucene[4] – część projektu Lucene), dla Perla (projekt plucene[5]) czy dla jęz. Ruby (projekt Lucene.rb[6]) oraz tzw. „portów” – wersji stworzonych niezależnie od pierwszej implementacji w innych językach programowania a kompatybilnych z nią[a] (należą do nich m.in. Clucene[7] napisany w jęz. C++ oraz pucene[8] napisany w jęz. PHP).

Częścią projektu jest narzędzie Sorl, które pozwala zbudować wyszukiwarki bez wykorzystania API z języków programowania[9].

Historia

Projekt Lucene został zapoczątkowany przez Douga Cuttinga w roku 1997 jako własny projekt (który – jak przyznaje autor – miał na celu samodoskonalenie się w jęz. Java[2][3]). Projekt został opublikowany jako otwarte oprogramowanie w roku 2000 (wersja 0.01)[10]. Następnie, w połowie roku 2001, biblioteka została przekazana Fundacji Apache (ASF)[3]. Pierwszym oficjalnym wydaniem ASF była wersja 1.2, opublikowana w październiku 2001[10]. Od tego czasu wydano kilka dużych wersji (wer. 2 – w roku 2006, wer. 3 – 2009, wer. 4 – 2012, wer. 5 – 2015, wer. 6 – 2016, wer. 7 – 2017 i wer. 8 – 2019[11]). Obecnie biblioteka Lucene (napisana w Javie) jest jedną z części projektu Lucene i jest nazywana Lucene-core. Innymi częściami projektu Lucene są, wspomniane wyżej, narzędzia Apache Solr oraz PyLucene.

Cechy i działanie

TODO: przydałoby się trochę technicznych szczegółów (indeks itp.). No i może 2-3 zdania o API.

TODO: informacja o tym czym jest http://lucene.apache.org/core/

Cutting, Doug. Lucene. Lecture at University of Pisa, November, 2004. http://lucene.sourceforge.net/talks/pisa/


Chociaż biblioteka Lucene może być stosowana w wielu rodzajach aplikacji wymagających pełnego indeksowania i wyszukiwania tekstu, jest znana ze swojej użyteczności w budowaniu wyszukiwarek internetowych jak również systemów lokalnego wyszukiwania pojedynczej witryny[12][13]. Lucene zawiera funkcje wyszukiwania rozmytego, które mogą być realizowane z użyciem różnych technik, m.in. obliczanie tzw. odległości Levenshteina między terminami[3][14].

Biblioteka Lucene została również wykorzystana do wdrożenia systemów rekomendacji[15]. Na przykład klasa „MoreLikeThis” Lucene może generować rekomendacje dotyczące podobnych dokumentów. W porównaniu pojęcia opartego na wektorze podejścia „MoreLikeThis” z miarami podobieństwa dokumentów opartymi na cytowaniu, takimi jak analiza bliskości cytowań i analiza bliskości cytowań, podejście Lucene wyróżniało się w zalecaniu dokumentów o bardzo podobnych cechach konstrukcyjnych i wąskiej pokrewieństwa[16]. Z kolei środki podobieństwa dokumentów oparte na cytowaniu były bardziej odpowiednie do rekomendowania dokumentów o szerszym zakresie[16], co oznacza, że ​​podejścia oparte na cytowaniu mogą być bardziej odpowiednie do generowania nieoczekiwanych rekomendacji, o ile dokumenty, które mają być rekomendowane, zawierają cytaty w tekście.

Projekty używające biblioteki Lucene

Sama Lucene jest tylko biblioteką indeksowania i wyszukiwania i nie zawiera funkcji indeksowania, analizy HTML czy innych funkcji wykraczających poza podstawowe możliwości. Stąd można wskazać wiele serwisów i aplikacji (w tym innych projektów otwartoźródłowych), które używają Lucene. Należą do nich m.in.:

  • Apache Nutch – narzędzie do indeksowania stron internetowych i parsowania HTML (ang. Web crawling)[17][18]
  • CiteSeerX – serwis indeksujący i wyszukujący prace naukowe[18]
  • DocFetcher – wieloplatformowa aplikacja do wyszukiwania informacji zgromadzonych na komputerze lokalnym[19]
  • Eclipse – wieloplatformowe IDE (Lucene użyte jako silnik przeszukiwania dokumentacji)[18]
  • Elasticsearch – serwer indeksowania i wyszukiwania korporacyjnego (Lucene jest tu podstawową biblioteką usługi indeksowania/wyszukiwania)[20]
  • JIRA – narzędzie do zarządzania zadaniami i błędami zgłaszanymi w projektach informatycznych (Lucene tu jest wyszukiwarką błędów na podstawie ich opisu)[18]


Uwagi

  1. W przypadku Lucene'a „kompatybilność” oznacza możliwość odczytu i zapisu tzw. indeksu Lucene'a.

Przypisy

  1. Apache Lucene - Welcome to Apache Lucene [online], lucene.apache.org [dostęp 2019-12-03].
  2. a b McCandless, Michael, Erik Hatcher, i Otis Gospodnetic. Lucene in action: covers Apache Lucene 3.0. Manning Publications Co., 2010. https://livebook.manning.com/book/lucene-in-action-second-edition.
  3. a b c d Andrzej Białecki, Robert Muir, Grant Ingersoll: Apache lucene 4. T. SIGIR 2012 workshop on open source information retrieval. 2012, s. 17. (ang.).
  4. Apache Lucene - Welcome to PyLucene [online], lucene.apache.org [dostęp 2019-10-23].
  5. Plucene - A Perl port of the Lucene search engine - metacpan.org [online], metacpan.org [dostęp 2019-10-23].
  6. Andreas Ronge, A JRuby wrapper for the Lucene Document Database. Contribute to andreasronge/lucene development by creating an account on GitHub [online], 15 listopada 2018 [dostęp 2019-10-23].
  7. CLucene - lightning fast C++ search engine [online], clucene.sourceforge.net [dostęp 2019-10-23].
  8. Pucene / Asapo [online], asapo.at [dostęp 2019-10-23].
  9. Apache Solr - [online], lucene.apache.org [dostęp 2019-10-23].
  10. a b https://lucene.apache.org/core/5_0_0/changes/Changes.html#older
  11. https://archive.apache.org/dist/lucene/java/
  12. McCandless, Michael; Hatcher, Erik; Gospodnetić, Otis (2010). Lucene in Action, Second Edition. Manning. p. 8. ISBN 1933988177.
  13. "GNU/Linux Semantic Storage System" (PDF). glscube.org. Archived from the original (PDF) on 2010-06-01.
  14. https://lucene.apache.org/core/2_9_4/queryparsersyntax.html
  15. J. Beel, S. Langer, and B. Gipp, “The Architecture and Datasets of Docear’s Research Paper Recommender System,” in Proceedings of the 3rd International Workshop on Mining Scientific Publications (WOSP 2014) at the ACM/IEEE Joint Conference on Digital Libraries (JCDL 2014), London, UK, 2014
  16. a b M. Schwarzer, M. Schubotz, N. Meuschke, C. Breitinger, V. Markl, and B. Gipp, https://www.gipp.com/wp-content/papercite-data/pdf/schwarzer2016.pdf "Evaluating Link-based Recommendations for Wikipedia" in Proceedings of the 16th ACM/IEEE-CS Joint Conference on Digital Libraries (JCDL), New York, NY, USA, 2016, pp. 191-200
  17. Zakir Laliwala i Abdulbasit Shaikh, Web Crawling and Data Mining with Apache Nutch, Packt Publishing, 2013.
  18. a b c d PoweredBy - Apache Lucene (Java) - Apache Software Foundation [online], cwiki.apache.org [dostęp 2019-12-04].
  19. DocFetcher - Fast Document Search [online], docfetcher.sourceforge.net [dostęp 2019-12-03].
  20. Marcin Bajer, Building an IoT Data Hub with Elasticsearch, Logstash and Kibana, „5th International Conference on Future Internet of Things and Cloud / Workshops”, 2017.