Mutlu bir şekilde duyuruyoruz GroupDocs.Search for Python v26.10 sürümünün Kasım 2026 itibarıyla mevcut olduğunu. Bu, ürünün ilk sürümüdür ve GroupDocs.Search 26.10 motorunun tam işlevselliğini Python geliştiricilerine getiriyor. PDF, Word, Excel, PowerPoint, e-posta, eKitap, arşiv ve birçok diğer format (toplam 80+) dahil olmak üzere belge klasörleri üzerinde tam metin indeksleri oluşturmayı ve sürdürmeyi ve bunları gelişmiş sorgu türleriyle aramayı sağlar: anahtar kelime, ifade, joker karakter, regex, bulanık, mantıksal, faceted ve tarih aralığı aramaları. Sürüm, Windows x64, Linux x64 (glibc 2.27+) ve macOS 13+ (Intel ve Apple Silicon) üzerinde Python 3.5–3.14’ü destekler ve .NET 10.0.14 çalışma zamanını gömülüdür.
Bu sürümde yenilikler
- [Feature] GroupDocs.Search for Python via .NET’in ilk sürümü (SEARCHPYTHONNET-40)
Genel API değişiklikleri
Bu ilk sürümdür, bu yüzden yükseltilecek bir şey yok. API, GroupDocs.Search for .NET 26.10’ı izler: sınıflar .NET adlarını korur, yöntemler, özellikler ve parametreler snake_case olarak yazılır (Index.Search index.search, SearchResult.DocumentCount result.document_count) ve enum üyeleri büyük harfle (OutputFormat.HTML). Bir sınıfın sahip olmadığı bir öznitelik atandığında, motorun hiç görmediği Python‑only bir öznitelik oluşturmak yerine, “Did you mean” ipucu içeren bir AttributeError yükseltilir.
Modüller
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.
Yeni özellikler
Belgeleri indeksleyin ve arayın
Index(folder) bir klasörde indeks oluşturur ya da zaten var olan indeksi açar. add() bir klasörü, bir dosyayı, yol listesi, akış veya çıkarılmış veriyi indeksler ve search() GroupDocs.Search sorgu dilinde bir sorgu alır: anahtar kelimeler, tırnak içinde ifadeler, joker karakterler (? bir karakter için, ?(1~5) bir ila beş karakter için), ^ sonrası düzenli ifadeler, AND, OR ve NOT, content: Bern veya filename: einstein gibi alan sorguları ve tarih ve sayı aralıkları. SearchQuery aynı sorguları nesneler olarak oluşturur.
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))
Bulanık, eşanlamlı ve kelime biçimi araması
Bulanık arama yazım ve OCR hatalarını tolere eder. Eşanlamlı, homofon ve kelime biçimi aramaları, yerleşik İngilizce sözlükler aracılığıyla bir sorguyu genişletir; index.dictionaries bu sözlükleri düzenlemenizi sağlar ve yazım ve klavye düzeni düzeltmesi de arama seçeneklerindendir.
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)
Bulunanları vurgulayın
DocumentHighlighter bulunan terimleri işaretlenmiş şekilde tüm belgeyi yazar, FragmentHighlighter ise sadece onların etrafındaki parçaları, HTML ya da düz metin olarak, bir dosyaya, bir dizeye ya da ikili dosya nesnesine yazar.
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 olayları Python işleyicileri olarak
İndeksin her olayı bir Python olayıdır: += ile abone olunur ve -= ile abonelik iptal edilir. Bir işleyici bir belgeyi atlayabilir, ona öznitelikler ekleyebilir ya da şifresini sağlayabilir ve indeksleme ve arama süreçlerinin ilerlemesini, hatalarını ve aşamalarını izler.
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")
Motorun genişletme noktaları için Python nesneleri
Kendi formatlarınız için özel metin çıkarıcıları, günlükçüler, kelime ayırıcıları, kelime biçimi sağlayıcıları, belge yükleyicileri ve OCR bağlayıcıları, motorun arayüzleri üzerinden çağırdığı düz Python nesneleri veya fonksiyonlarıdır.
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")
Bir indeksi güncel tutun
Bir indeks bir klasördür: bir kez oluşturulur ve sonraki çalıştırmada yeniden açılır. update() son add() veya update() işleminden beri değişen belgeleri yeniden indeksler, optimize() indeks segmentlerini birleştirir ve delete() belgeleri yol ile kaldırır.
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")
Ortamdan bir lisans
GROUPDOCS_LIC_PATH değişkenini bir lisans dosyasının yolu ya da URL’si olarak ayarlayın; lisans motorun ilk çağrısında uygulanır; License().set_license(path) aynı şeyi kod içinde yapar. Uygulanamayan bir lisans, değerlendirme moduna geri dönmek yerine, ilk çağrıdan itibaren LicenseError yükseltir. Lisans olmadan bir indeks en fazla 100 belge alır ve bir aramanın bulunan ilk 10 belgesi okunabilir.
export GROUPDOCS_LIC_PATH="/path/to/GroupDocs.Search.lic"
Kod örneği
Çalışan kod örnekleri için yukarıdaki “Belgeleri indeksleyin ve arayın”, “Bulanık, eşanlamlı ve kelime biçimi araması”, “Bulunanları vurgulayın”, “.NET olayları Python işleyicileri olarak”, “Motorun genişletme noktaları için Python nesneleri” ve “Bir indeksi güncel tutun” bölümlerine bakın.
Güncellemeyi nasıl alabilirsiniz
PyPI
- Paket: groupdocs-search-net 26.10.0
- Kurulum komutu:
pip install groupdocs-search-net==26.10.0
Doğrudan indirme
Platformunuz için tekerleği GroupDocs.Search for Python via .NET 26.10 sayfasından indirin, ardından dosyayı kurun:
- 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