Operatory logiczne Java – tworzenie indeksu wyszukiwania i wyszukiwanie fasetowe

Implementacja potężnego search experience w Javie może wydawać się przytłaczająca, szczególnie gdy musisz create a search index Java wspierający boolean operators Java dla zapytań fasetowych i złożonych. W tym samouczku przeprowadzimy Cię przez konfigurację GroupDocs.Search for Java, budowanie indeksu, dodawanie dokumentów oraz tworzenie zarówno prostych wyszukiwań fasetowych, jak i zaawansowanych zapytań wielokryterialnych wykorzystujących logikę Boole’a. Po zakończeniu zrozumiesz, jak wykorzystać content search Java, filename search Java, a nawet operacje update index Java, aby utrzymać dane aktualne.

Szybkie odpowiedzi

  • Co to jest wyszukiwanie fasetowe? Sposób filtrowania wyników według predefiniowanych kategorii, takich jak typ pliku lub data.
  • Jak utworzyć indeks wyszukiwania Java? Zainicjalizuj obiekt Index wskazujący na folder i dodaj dokumenty.
  • Czy mogę połączyć wiele kryteriów za pomocą operatorów logicznych? Tak — użyj zapytań opartych na obiektach lub operatorów Boolean w zapytaniu tekstowym.
  • Czy potrzebuję licencji? Darmowa wersja próbna działa w środowisku deweloperskim; licencja komercyjna usuwa ograniczenia.
  • Które IDE działa najlepiej? Dowolne IDE Java (IntelliJ IDEA, Eclipse, NetBeans) działa dobrze.

Co to jest „create search index java”?

Tworzenie indeksu wyszukiwania Java oznacza budowanie struktury opartej na dysku, która przechowuje tekst dokumentu i metadane, umożliwiając natychmiastowe pobieranie pasujących dokumentów za pomocą zapytań. Indeks mapuje terminy na identyfikatory dokumentów, wspiera szybkie wyszukiwania i może być aktualizowany inkrementalnie w miarę zmian plików, zapewniając podstawę dla potężnych funkcji wyszukiwania.

Dlaczego używać GroupDocs.Search do zapytań fasetowych i złożonych?

GroupDocs.Search for Java zapewnia wbudowane fasetowanie, obsługę zapytań Boolean oraz wydajne indeksowanie, które może obsłużyć do 10 milionów dokumentów, utrzymując opóźnienie zapytań poniżej 200 ms na typowym sprzęcie serwerowym. Oferuje gotowe filtry pól, bogaty język zapytań oraz czystą kompatybilność Java, co czyni go idealnym dla scenariuszy wyszukiwania na skalę przedsiębiorstwa.

Wymagania wstępne

  • JDK 8 lub nowszy zainstalowany i skonfigurowany w Twoim IDE.
  • Maven (lub Gradle) do zarządzania zależnościami.
  • GroupDocs.Search for Java ≥ 25.4.
  • Podstawowa znajomość koncepcji OOP w Javie oraz struktury projektu Maven.

Konfiguracja GroupDocs.Search dla Java

Konfiguracja Maven

Dodaj repozytorium i zależność do pliku pom.xml:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/search/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-search</artifactId>
      <version>25.4</version>
   </dependency>
</dependencies>

Bezpośrednie pobranie

Alternatywnie, pobierz najnowszy plik JAR z oficjalnej strony wydań:
GroupDocs.Search for Java releases

Uzyskanie licencji

Aby odblokować pełną funkcjonalność:

  1. Free trial – idealny do rozwoju i testowania.
  2. Temporary evaluation license – wydłuża limity wersji próbnej.
  3. Commercial license – usuwa wszystkie ograniczenia w środowisku produkcyjnym.

Podstawowa inicjalizacja i konfiguracja

Klasa Index jest podstawowym komponentem reprezentującym indeks wyszukiwalny przechowywany na dysku. Poniższy fragment pokazuje, jak create a search index Java poprzez utworzenie instancji klasy Index:

import com.groupdocs.search.Index;

public class SearchSetup {
    public static void main(String[] args) {
        String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/SimpleFacetedSearch";
        
        // Create an instance of Index – this creates the on‑disk index
        Index index = new Index(indexFolder);
        
        System.out.println("GroupDocs.Search initialized successfully!");
    }
}

Po przygotowaniu indeksu możemy przejść do rzeczywistych zapytań fasetowych i złożonych.

Jak używać boolean operators java – Proste wyszukiwanie fasetowe

Załaduj swój indeks, dodaj dokumenty i wykonaj zapytanie pola; dwustopniowy wzorzec pozwala pobrać liczbę faset i przefiltrowane wyniki w jednym wywołaniu. To podejście daje użytkownikom intuicyjny sposób zawężania wyników według kategorii, takich jak typ pliku, autor lub niestandardowe metadane.

Krok 1: Utwórz indeks

Najpierw wskaż Index na folder, w którym będą przechowywane pliki indeksu.

import com.groupdocs.search.Index;

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/SimpleFacetedSearch";
Index index = new Index(indexFolder);

Krok 2: Dodaj dokumenty do indeksu

Powiedz GroupDocs.Search, gdzie znajdują się Twoje dokumenty źródłowe. Wszystkie obsługiwane typy plików (PDF, DOCX, TXT itp.) zostaną automatycznie zaindeksowane.

import com.groupdocs.search.Index;

String documentsFolder = "YOUR_DOCUMENT_DIRECTORY";

// Adding documents to the index
index.add(documentsFolder);

Krok 3: Wykonaj wyszukiwanie w polu content za pomocą zapytania tekstowego

Szybkie zapytanie tekstowe filtruje według pola content. Składnia content: Pellentesque ogranicza wyniki do dokumentów zawierających słowo Pellentesque w treści.

import com.groupdocs.search.results.SearchResult;

String query1 = "content: Pellentesque";
SearchResult result1 = index.search(query1);

// Output search results
System.out.println("Documents found (query 1): " + result1.getDocumentCount());

Krok 4: Wykonaj wyszukiwanie przy użyciu zapytania obiektowego

Zapytania oparte na obiektach dają precyzyjną kontrolę. Tutaj budujemy zapytanie słowne, otaczamy je zapytaniem pola i wykonujemy je.

import com.groupdocs.search.SearchQuery;
import com.groupdocs.search.options.CommonFieldNames;

SearchQuery wordQuery = SearchQuery.createWordQuery("Pellentesque");
SearchQuery fieldQuery = SearchQuery.createFieldQuery(CommonFieldNames.Content, wordQuery);
SearchResult result2 = index.search(fieldQuery);

// Output search results
System.out.println("Documents found (query 2): " + result2.getDocumentCount());

Jak używać boolean operators java – Wyszukiwanie złożonych zapytań

Aby wykonać złożone zapytanie, połącz wiele warunków pola za pomocą operatorów AND/OR/NOT i opcjonalnie uwzględnij wyszukiwanie fraz. Możesz określić każdy warunek przy użyciu zapytań pola, zagnieździć je operatorami Boolean i kontrolować trafność za pomocą boostingu, co pozwala zwrócić tylko najbardziej istotne dokumenty spełniające wszystkie wymagane kryteria.

Krok 1: Utwórz indeks dla zapytań złożonych

Użyj ponownie tej samej struktury folderów; możesz współdzielić indeks zarówno w prostych, jak i złożonych scenariuszach.

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/ComplexQuery";
Index index = new Index(indexFolder);
index.add(documentsFolder);

Krok 2: Wykonaj wyszukiwanie za pomocą zapytania tekstowego

Poniższe zapytanie wyszukuje pliki o nazwie lorem i ipsum lub treść zawierającą jedną z dwóch dokładnych fraz.

import com.groupdocs.search.results.SearchResult;

String query1 = "(filename: (lorem AND ipsum)) OR (content: (\"lectus eu aliquam\" OR \"dignissim turpis\"))";
SearchResult result1 = index.search(query1);

// Output search results
class SearchResult {
    public int getDocumentCount() {
        // Implementation here
        return 0; // Placeholder
    }
}
System.out.println("Documents found (complex text query): " + result1.getDocumentCount());

Krok 3: Wykonaj wyszukiwanie przy użyciu zapytania obiektowego

Budowa oparta na obiektach odzwierciedla zapytanie tekstowe, ale zapewnia bezpieczeństwo typów i pomoc IDE.

import com.groupdocs.search.SearchQuery;

SearchQuery word6Query = SearchQuery.createWordQuery("lorem");
SearchQuery word7Query = SearchQuery.createWordQuery("ipsum");

// Constructing AND, OR queries for filename field
SearchQuery andQuery = SearchQuery.createAndQuery(word6Query, word7Query);
SearchQuery filenameQuery = SearchQuery.createFieldQuery(CommonFieldNames.FileName, andQuery);

// Content search using OR query with phrases
SearchQuery phrase1Query = SearchQuery.createPhraseSearchQuery("lectus", "eu", "aliquam");
SearchQuery phrase2Query = SearchQuery.createPhraseSearchQuery("dignissim", "turpis");

SearchQuery contentQuery = SearchQuery.createFieldQuery(CommonFieldNames.Content, 
    SearchQuery.createOrQuery(phrase1Query, phrase2Query));

// Final root query combining filename and content queries
SearchQuery rootQuery = SearchQuery.createOrQuery(filenameQuery, contentQuery);
SearchResult result2 = index.search(rootQuery);

// Output search results
System.out.println("Documents found (complex object query): " + result2.getDocumentCount());

Praktyczne zastosowania wyszukiwań fasetowych i złożonych

ScenariuszJak fasetowanie pomagaPrzykładowe zapytanie
Katalog e‑commerceFiltrowanie według kategorii, ceny, markicategory: Electronics AND price:[100 TO 500]
Repozytorium dokumentów prawnychZawężanie według numeru sprawy, jurysdykcjicaseNumber: 2023-045 AND jurisdiction: "California"
Archiwa badawczeŁączenie autora, roku publikacji, słów kluczowych(author: "Doe") AND (year: 2022) AND (keywords: "machine learning")
Intranet przedsiębiorstwaWyszukiwanie według typu pliku i działufiletype: pdf AND department: HR

Częste pułapki i rozwiązywanie problemów

Obiekt SearchResult zawiera dokumenty pasujące do zapytania i zapewnia dostęp do ich ocen trafności oraz wyróżnionych fragmentów.
Klasa CommonFieldNames definiuje standardowe nazwy pól, takie jak Content i FileName, używane w całym API.

  • Empty results – Sprawdź, czy dokumenty zostały pomyślnie dodane (index.getDocumentCount() może pomóc).
  • Stale index – Po dodaniu lub usunięciu plików wywołaj index.update(), aby update index java i utrzymać indeks w synchronizacji.
  • Incorrect field names – Użyj stałych CommonFieldNames (Content, FileName itp.), aby uniknąć literówek.
  • Performance bottlenecks – W przypadku dużych kolekcji rozważ włączenie index.setCacheSize() lub użycie dedykowanego SSD dla folderu indeksu.
  • Missing highlights – Aby highlight search results java, pobierz dopasowane fragmenty za pomocą SearchResult.getFragments() (nie pokazano tutaj, ale dostępne w API).

Najczęściej zadawane pytania

Q: Czy mogę używać GroupDocs.Search z Spring Boot?
A: Absolutnie. Dodaj zależność Maven, skonfiguruj indeks jako bean Spring i wstrzyknij go tam, gdzie potrzebujesz funkcji wyszukiwania.

Q: Czy biblioteka obsługuje niestandardowe pola metadanych?
A: Tak — możesz dodać pola definiowane przez użytkownika podczas indeksowania, a następnie wykonywać na nich fasetowanie.

Q: Jak duży może być indeks?
A: Indeks oparty na dysku może obsłużyć do 10 milionów dokumentów; wystarczy zapewnić odpowiednią pojemność dysku i monitorować ustawienia pamięci podręcznej.

Q: Czy istnieje sposób na ranking wyników według trafności?
A: GroupDocs.Search automatycznie ocenia dopasowania; możesz pobrać wynik za pomocą SearchResult.getDocument(i).getScore().

Q: Co się stanie, jeśli zindeksuję zaszyfrowane pliki PDF?
A: Podaj hasło podczas dodawania dokumentu: index.add(filePath, password).

Zakończenie

Do tej pory powinieneś czuć się komfortowo creating a search index Java z GroupDocs.Search, dodawać dokumenty i tworzyć zarówno proste zapytania fasetowe, jak i zaawansowane wyszukiwania Boolean przy użyciu boolean operators java. Te możliwości umożliwiają dostarczanie szybkich, dokładnych i przyjaznych dla użytkownika doświadczeń wyszukiwania w szerokim zakresie aplikacji — od platform e‑commerce po korporacyjne bazy wiedzy.

Gotowy na kolejny krok? Poznaj zaawansowane funkcje GroupDocs.Search, takie jak highlighting, suggestions i real‑time indexing, aby jeszcze bardziej zwiększyć moc wyszukiwania w Twojej aplikacji.


Ostatnia aktualizacja: 2026-08-26
Testowano z: GroupDocs.Search 25.4 for Java
Autor: GroupDocs

Powiązane samouczki