S radostí oznamujeme vydání GroupDocs.Search for Python v26.10, dostupné od listopadu 2026. Jedná se o úvodní vydání produktu, které přináší plnou funkčnost enginu GroupDocs.Search 26.10 pro vývojáře v Pythonu. Umožňuje vytvářet a udržovat fulltextové indexy nad složkami dokumentů — včetně PDF, Word, Excel, PowerPoint, e‑mail, eBook, archiv a mnoho dalších formátů (celkem 80+) — a vyhledávat v nich pomocí pokročilých typů dotazů: klíčová slova, fráze, zástupné znaky, regulární výrazy, fuzzy, boolean, faceted a vyhledávání v rozmezích dat. Vydání podporuje Python 3.5–3.14 na Windows x64, Linux x64 (glibc 2.27+), a macOS 13+ (Intel i Apple Silicon) a vkládá runtime .NET 10.0.14.
Co je nového v tomto vydání
- [Feature] Úvodní vydání GroupDocs.Search for Python přes .NET (SEARCHPYTHONNET-40)
Změny veřejného API
Jedná se o první vydání, takže není co aktualizovat. API odpovídá GroupDocs.Search for .NET 26.10: třídy si zachovávají své .NET názvy, zatímco metody, vlastnosti a parametry jsou psány ve snake_case (Index.Search je index.search, SearchResult.DocumentCount je result.document_count) a položky výčtů velkými písmeny (OutputFormat.HTML). Při přiřazení atributu, který třída nemá, se vyvolá AttributeError s nápovědou „Did you mean“, místo vytvoření Python‑only atributu, který engine nikdy nevidí.
Moduly
groupdocs.search:Index,IndexSettings,IndexRepository,IndexUpdater,SearchQuery,Extractor,License,Metered,GroupDocsSearchException,LicenseError,CancellationTokenSource.groupdocs.search.options:IndexingOptions,SearchOptions,FuzzySearchOptions,SimilarityLevel,UpdateOptions,HighlightOptions,OutputFormat,SeparateProcessOptions,ImageSearchOptions.groupdocs.search.results:SearchResult,FoundDocument,FoundDocumentField,DocumentInfo,FileType,FormatFamily.groupdocs.search.highlighters:DocumentHighlighter,FragmentHighlighter.groupdocs.search.common:FileOutputAdapter,StringOutputAdapter,StreamOutputAdapter,Document,DocumentField,ExtractedData,FileLogger,AttributeChangeBatch.groupdocs.search.dictionaries:SynonymDictionary,HomophoneDictionary,StopWordDictionary,SpellingCorrector,AliasDictionary,CharacterReplacementPair.groupdocs.search.events:EventHub,FileIndexingEventArgs,IndexErrorEventArgs,OperationProgressEventArgs,PasswordRequiredEventArgs.groupdocs.search.exceptions:SearchException,LicenseRestrictionException.groupdocs.search.scaling:SearchNetworkNode,Indexer,Searcher.groupdocs.search.scaling.configuring:Configuration,Configurator,TcpSettings.
Nové funkce
Indexujte dokumenty a vyhledávejte v nich
Index(folder) vytvoří index ve složce nebo otevře již existující index. add() indexuje složku, soubor, seznam cest, streamy nebo extrahovaná data a search() přijímá dotaz v jazyce dotazů GroupDocs.Search: klíčová slova, fráze v uvozovkách, zástupné znaky (? pro jeden znak, ?(1~5) pro jeden až pět), regulární výrazy po ^, AND, OR a NOT, dotazy na pole jako content: Bern nebo filename: einstein a rozsahy dat a čísel. SearchQuery vytváří stejné dotazy jako objekty.
from groupdocs.search import Index
with Index("./index") as index: # creates the index folder, or opens it
index.add("./documents") # indexes every supported file in the folder
for query in ["relativity", '"theory of relativity"', "relativ?ty",
"^relativ.*", "Einstein AND NOT Newton", "content: Bern"]:
result = index.search(query)
print("%-26s %d documents, %d occurrences"
% (query, result.document_count, result.occurrence_count))
Fuzzy, synonym a word‑form vyhledávání
Fuzzy vyhledávání toleruje chyby při psaní i OCR. Synonym, homophone a word‑form vyhledávání rozšiřuje dotaz pomocí vestavěných anglických slovníků, které můžete upravovat pomocí index.dictionaries, a oprava pravopisu a rozložení klávesnice jsou také možnosti vyhledávání.
from groupdocs.search import Index
from groupdocs.search.options import SearchOptions, SimilarityLevel
with Index("./index") as index:
index.add("./documents")
fuzzy = SearchOptions()
fuzzy.fuzzy_search.enabled = True
fuzzy.fuzzy_search.fuzzy_algorithm = SimilarityLevel(0.8) # 0.0 (loose) .. 1.0 (strict)
print("relativty:", index.search("relativty").document_count,
"->", index.search("relativty", fuzzy).document_count)
synonyms = SearchOptions()
synonyms.use_synonym_search = True
print("picture:", index.search("picture").document_count,
"->", index.search("picture", synonyms).document_count)
word_forms = SearchOptions()
word_forms.use_word_forms_search = True
print("letter:", index.search("letter").document_count,
"->", index.search("letter", word_forms).document_count)
Zvýrazněte nalezené
DocumentHighlighter zapíše celý dokument s označenými nalezenými výrazy a FragmentHighlighter pouze fragmenty kolem nich, jako HTML nebo prostý text, do souboru, řetězce nebo binárního souborového objektu.
from groupdocs.search import Index
from groupdocs.search.common import FileOutputAdapter
from groupdocs.search.highlighters import DocumentHighlighter
from groupdocs.search.options import OutputFormat
with Index("./index") as index:
index.add("./documents")
result = index.search("relativity")
if result.document_count > 0:
found = result.get_found_document(0)
adapter = FileOutputAdapter(OutputFormat.HTML, "./highlighted.html")
index.highlight(found, DocumentHighlighter(adapter))
print(found.document_info.file_path, "-> highlighted.html")
.NET události jako Python handlery
Každá událost indexu je Python událost: přihlásit se pomocí += a odhlásit pomocí -=. Handler může přeskočit dokument, označit jej atributy nebo poskytnout jeho heslo a sleduje průběh, chyby a fáze indexování a vyhledávání.
from groupdocs.search import Index
skipped = []
def on_file_indexing(sender, args):
if args.document_full_path.endswith(".zip"):
args.skip_indexing = True # leave archives out of the index
skipped.append(args.document_full_path)
with Index("./index") as index:
index.events.file_indexing += on_file_indexing
index.add("./documents")
index.events.file_indexing -= on_file_indexing
print(len(index.get_indexed_documents()), "documents indexed,", len(skipped), "archives skipped")
Python objekty pro rozšiřovací body enginu
Vlastní textové extraktory pro vaše formáty, loggery, rozdělování slov, poskytovatele word‑form, načítače dokumentů a OCR konektory jsou obyčejné Python objekty nebo funkce, které engine volá přes své rozhraní.
from groupdocs.search import Index, IndexSettings
class LogExtractor(object):
"""Text of .log files, which the engine does not read on its own."""
extensions = [".log"]
def get_fields(self, source): # a file path, or the engine's stream
if isinstance(source, str):
with open(source, encoding="utf-8") as f:
text = f.read()
else:
text = source.read().decode("utf-8")
return [("Content", text)]
settings = IndexSettings()
settings.custom_extractors.add(LogExtractor())
with Index("./log-index", settings) as index:
index.add("./logs")
print(index.search("quota").document_count, "log file(s) mention a quota")
Udržujte index aktuální
Index je složka: vytvoříte jej jednou a později jej znovu otevřete. update() přeindexuje jen dokumenty, které se změnily od posledního add() nebo update(), optimize() sloučí segmenty indexu a delete() odstraní dokumenty podle cesty.
from groupdocs.search import Index
with Index("./index") as index:
index.add("./documents")
# ... files in ./documents are added, changed or removed ...
index.update() # re-indexes only what changed
index.optimize() # merges index segments so searches stay fast
print(len(index.get_indexed_documents()), "documents in the index")
Licence z prostředí
Nastavte GROUPDOCS_LIC_PATH na cestu nebo URL licenčního souboru a licence se použije při prvním volání do enginu; License().set_license(path) dělá totéž v kódu. Licence, kterou nelze použít, vyvolá LicenseError od prvního volání, místo aby se přepnula do evaluačního režimu. Bez licence index obsahuje maximálně 100 dokumentů a lze přečíst jen prvních 10 nalezených dokumentů ve vyhledávání.
export GROUPDOCS_LIC_PATH="/path/to/GroupDocs.Search.lic"
Příklad kódu
Viz sekce „Indexujte dokumenty a vyhledávejte v nich“, „Fuzzy, synonym a word‑form vyhledávání“, „Zvýrazněte nalezené“, „.NET události jako Python handlery“, „Python objekty pro rozšiřovací body enginu“ a „Udržujte index aktuální“ výše pro funkční příklady kódu.
Jak získat aktualizaci
PyPI
- Balíček: groupdocs-search-net 26.10.0
- Instalační příkaz:
pip install groupdocs-search-net==26.10.0
Přímé stažení
Stáhněte si wheel pro vaši platformu ze stránky GroupDocs.Search for Python via .NET 26.10 a poté nainstalujte soubor:
- Windows x64:
pip install groupdocs_search_net-26.10.0-py3-none-win_amd64.whl - Linux x64:
pip install groupdocs_search_net-26.10.0-py3-none-manylinux_2_27_x86_64.whl - macOS Intel:
pip install groupdocs_search_net-26.10.0-py3-none-macosx_13_0_x86_64.whl - macOS Apple Silicon:
pip install groupdocs_search_net-26.10.0-py3-none-macosx_13_0_arm64.whl