Jak generovat tvary v Javě s GroupDocs.Search
V tomto průvodci se naučíte jak generovat tvary v Javě pomocí API GroupDocs.Search. Vytvořením vlastního poskytovatele tvarů slov umožníte vašemu vyhledávacímu nebo textovému analytickému enginu rozpoznat každou variantu termínu — ať už jde o „cat“, „cats“, „city“ nebo „citis“. To výrazně zvyšuje úplnost (recall) a zároveň udržuje vysokou přesnost.
Rychlé odpovědi
- Co dělá poskytovatel tvarů slov? Generuje alternativní tvary (jednotné, množné atd.) daného slova, aby vyhledávání mohlo odpovídat všem variantám.
- Která knihovna je vyžadována? GroupDocs.Search pro Java (verze 25.4 nebo novější).
- Potřebuji licenci? Bezplatná zkušební verze stačí pro hodnocení; pro produkční nasazení je vyžadována trvalá licence.
- Jaká verze Javy je podporována? JDK 8 nebo vyšší.
- Kolik řádků kódu je potřeba? Přibližně 30 řádků pro jednoduchou implementaci poskytovatele.
Co je funkce „vytvořit poskytovatele tvarů slov“?
„Vytvořit poskytovatele tvarů slov“ je vlastní třída, která implementuje IWordFormsProvider. IWordFormsProvider je rozhraní, které určuje, jak poskytovatelé dodávají alternativní tvary slov vyhledávacímu enginu. Přijímá slovo a vrací pole možných tvarů — jednotné, množné nebo jiné jazykové varianty — na základě pravidel, která definujete. To umožňuje indexu vyhledávání považovat „cat“ a „cats“ za ekvivalentní, čímž zvyšuje úplnost (recall) bez ztráty přesnosti.
Proč použít GroupDocs.Search pro generování tvarů slov?
GroupDocs.Search nabízí vestavěnou rozšiřitelnost, která vám umožní připojit vlastní poskytovatele přímo do pipeline indexování. Zpracovává indexy až s 10 miliony dokumentů a přitom udržuje využití paměti pod 500 MB díky streamovací architektuře, a můžete kešovat výsledky pro dosažení pod‑milisekundových časů vyhledávání.
Předpoklady
- Maven nainstalovaný a JDK 8 nebo novější nastavený na vašem počítači.
- Základní znalost vývoje v Javě a konfigurace
pom.xmlv Maven. - Přístup ke knihovně GroupDocs.Search pro Java (verze 25.4 nebo novější).
Nastavení GroupDocs.Search pro Java
Konfigurace Maven
Přidejte repozitář a závislost do souboru pom.xml přesně tak, jak je uvedeno níže:
<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>
Přímé stažení
Alternativně stáhněte nejnovější JAR z oficiální stránky vydání: Vydání GroupDocs.Search pro Java.
Kroky získání licence
- Bezplatná zkušební verze: Zaregistrujte se k vyzkoušení, abyste prozkoumali základní funkce.
- Dočasná licence: Požádejte o dočasný klíč pro rozšířené testování.
- Nákup: Získejte komerční licenci pro neomezené používání v produkci.
Základní inicializace a nastavení
Následující úryvek ukazuje, jak vytvořit index — váš výchozí bod pro přidávání dokumentů a logiky tvarů slov:
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Initialize an index
Index index = new Index("path/to/index");
System.out.println("GroupDocs.Search initialized successfully.");
}
}
Průvodce implementací
Níže projdeme kroky k vytvoření poskytovatele tvarů slov, který zpracovává jednoduché převody jednotné‑na‑množné a množné‑na‑jednotné.
Implementace SimpleWordFormsProvider
Přehled
Třída SimpleWordFormsProvider implementuje IWordFormsProvider. Definiční kotva objasňuje její účel:
SimpleWordFormsProvider je vlastní implementace IWordFormsProvider, která poskytuje jednotno‑množné varianty pro indexovací engine.
Krok 1 – vytvořte kostru třídy
Začněte definováním třídy, která implementuje IWordFormsProvider. Nechte importy beze změny:
import com.groupdocs.search.dictionaries.IWordFormsProvider;
import java.util.ArrayList;
public class SimpleWordFormsProvider implements IWordFormsProvider {
Krok 2 – implementujte getWordForms
Přidejte metodu, která sestavuje seznam možných tvarů. Tento blok obsahuje hlavní logiku; později ji můžete rozšířit pro složitější pravidla.
getWordForms přijímá termín a vrací String[] obsahující všechny vygenerované varianty.
@Override
public final String[] getWordForms(String word) {
// Initialize a list to store generated word forms
ArrayList<String> result = new ArrayList<>();
// Singular form for words ending in 'es'
if (word.length() > 2 && word.toLowerCase().endsWith("es")) {
result.add(word.substring(0, word.length() - 2));
}
// Singular form for words ending in 's'
if (word.length() > 1 && word.toLowerCase().endsWith("s")) {
result.add(word.substring(0, word.length() - 1));
}
// Plural form by replacing 'y' with 'is'
if (word.length() > 1 && word.toLowerCase().endsWith("y")) {
result.add(word.substring(0, word.length() - 1).concat("is"));
}
// Basic plural forms
result.add(word.concat("s"));
result.add(word.concat("es"));
// Convert list to array and return
return result.toArray(new String[0]);
}
}
Vysvětlení logiky
- Singularizace: Detekuje běžné množné přípony (
es,s) a odstraňuje je, aby odhadla základní slovo. - Pluralizace: Zpracovává podstatná jména končící na
ytím, že je nahradíis, jednoduché pravidlo fungující pro mnoho anglických slov. - Přidávání přípon: Přidává
saesk pokrytí pravidelných množných tvarů, které nemusí být zachyceny předchozími kontrolami.
Tipy pro řešení problémů
- Rozlišování velikosti písmen: Metoda používá
toLowerCase()pro porovnání, což zajišťuje, že „Cats“ a „cats“ se chovají stejně. - Hraniční případy: Slova kratší než délka přípony jsou ignorována, aby se předešlo vracení prázdných řetězců.
- Výkon: Pro velké slovníky zvažte kešování výsledků v
ConcurrentHashMap.
Praktické aplikace
Implementace vytvoření poskytovatele tvarů slov může posílit několik reálných scénářů:
- Vyhledávače: Uživatelé zadávající „mouse“ by měli také najít dokumenty obsahující „mice“. Poskytovatel může generovat takové nepravidelné tvary.
- Nástroje pro analýzu textu: Analýza sentimentu nebo extrakce entit se stává spolehlivější, když jsou rozpoznány všechny varianty slov.
- Systémy pro správu obsahu: Automatické generování štítků může zahrnovat množné synonymy, což zlepšuje SEO a interní propojení.
Úvahy o výkonu
Když vložíte poskytovatele do produkčního systému, mějte na paměti následující tipy:
- Kešujte často používané tvary: Ukládejte výsledky do paměti, abyste se vyhnuli opakovanému přepočítávání stejných slov.
- Sledujte haldu JVM: Velké indexy mohou zvyšovat zatížení paměti; podle toho upravte
-Xmx. - Používejte efektivní kolekce:
ArrayListfunguje pro malé sady, ale pro tisíce tvarů zvažteHashSetpro rychlé odstranění duplicit.
Nejlepší postupy
- Udržujte knihovnu aktuální, abyste získali výkonnostní opravy.
- Profilujte poskytovatele s realistickým zatížením dotazů, abyste včas odhalili úzká místa.
Závěr
Nyní jste se naučili jak generovat tvary v Javě pomocí vlastního SimpleWordFormsProvider s GroupDocs.Search. Tato lehká komponenta může výrazně zlepšit relevance výsledků vyhledávání a přesnost jazykové analýzy v mnoha aplikacích.
Další kroky
- Experimentujte s pokročilejšími jazykovými pravidly (nepravidelné množné, stemming).
- Integrujte poskytovatele do pipeline indexování a změřte zlepšení úplnosti (recall).
- Prozkoumejte další funkce GroupDocs.Search, jako jsou slovníky synonym a vlastní analyzátory.
Výzva k akci: Vyzkoušejte přidání SimpleWordFormsProvider do vlastního projektu ještě dnes a uvidíte, jak obohacuje vaše vyhledávací zkušenosti!
Sekce FAQ
Q: Co je GroupDocs.Search pro Java?
A: Jedná se o výkonnou knihovnu, která nabízí full‑textové vyhledávání, indexování a jazykové funkce — včetně možnosti připojit vlastní poskytovatele tvarů slov.
Q: Jak SimpleWordFormsProvider funguje?
A: Generuje alternativní tvary aplikací jednoduchých pravidel založených na příponách (odstraňuje „s/es“, převádí „y“ na „is“ a přidává „s/es“).
Q: Mohu přizpůsobit pravidla generování tvarů slov?
A: Rozhodně. Upravit metodu getWordForms, aby zahrnovala nepravidelné tvary, specifické pravidla pro locale nebo integraci s externími slovníky.
Q: Jaké jsou běžné aplikace této funkce?
A: Vyhledávače, pipeline pro analýzu textu a platformy CMS těží z rozpoznávání jednotných/množných variant.
Q: Potřebuji komerční licenci pro produkční použití?
A: Ano — zatímco zkušební verze vám umožní prozkoumat API, zakoupená licence odstraňuje omezení používání a poskytuje podporu.
Poslední aktualizace: 2026-09-02
Testováno s: GroupDocs.Search 25.4 (Java)
Autor: GroupDocs