To explore the system effectively, you may want immediate access to the API. GroupDocs.Search simplifies this by offering various purchase plans, along with a Free Trial and a 30-day Temporary License for evaluation.
Note
To learn more about licensing options, purchasing, and evaluation policies, refer to the Purchase Policies and FAQ section.
Purchased License
After purchasing GroupDocs.Search for Python via .NET, you will receive a license file that unlocks the full functionality of the API. A few rules apply:
Apply the license only once per process, in your start-up code.
Apply it before creating any Index or other GroupDocs.Search object.
A license can be applied from a file path, from a binary stream (handy when the license is an embedded resource), from an environment variable, or as a Metered License that bills by usage.
The license file contains details such as the product name, the number of developers it is licensed to, and the subscription expiry date. It carries a digital signature, so do not modify the file: even an inadvertent extra line break invalidates it.
Use the set_license method to license the component. Calling it more than once is harmless - it simply wastes a little processor time. On Windows, the first license check in a process takes 15-30 seconds; later calls are immediate.
Set a license from a file
The example below applies a license from a file path. It reads the path from the GROUPDOCS_LIC_PATH environment variable and falls back to a local GroupDocs.Search.lic file. A relative path is resolved against the current working directory of the process, which may differ from your script’s folder (for example, in a service or a web application), so an absolute path is recommended:
importosfromgroupdocs.searchimportLicensedefset_license_from_file():# Resolve the license path from the environment, with a local fallbacklicense_path=os.environ.get("GROUPDOCS_LIC_PATH","./GroupDocs.Search.lic")# Apply the license before using any search featuresifos.path.exists(license_path):License().set_license(license_path)print("License set successfully.")else:print("License file not found. Running in evaluation mode.")if__name__=="__main__":set_license_from_file()
Set a license from a stream
You can also apply a license from any readable binary stream - useful when the license ships as an embedded resource:
importosfromgroupdocs.searchimportLicensedefset_license_from_stream():# Resolve the license path from the environment, with a local fallbacklicense_path=os.environ.get("GROUPDOCS_LIC_PATH","./GroupDocs.Search.lic")# Apply the license from an open binary streamifos.path.exists(license_path):withopen(license_path,"rb")asstream:License().set_license(stream)print("License set successfully.")else:print("License file not found. Running in evaluation mode.")if__name__=="__main__":set_license_from_stream()
Set a license from an environment variable
Set GROUPDOCS_LIC_PATH to the license file’s path, or to a URL that serves it, and the license is applied at the first call into the engine, with no licensing code:
A license that cannot be applied (a missing file, an expired subscription, a license for another product) raises LicenseError from the first call into the engine on, rather than letting the process run in evaluation mode unnoticed. The message names the variable and the engine’s reason. Set GROUPDOCS_LIC_STRICT=0 to get a LicenseWarning and evaluation mode instead.
Set a metered license
A Metered License lets you pay for what you use. Pass the public and private keys to set_metered_key before using the API, then read the consumption with Metered.get_consumption_quantity() and Metered.get_consumption_credit(). The example reads the keys from two environment variables:
importosfromgroupdocs.searchimportMetereddefset_metered_license():public_key=os.environ.get("GROUPDOCS_METERED_PUBLIC_KEY")private_key=os.environ.get("GROUPDOCS_METERED_PRIVATE_KEY")# Skip the call until real keys are suppliedifnot(public_keyandprivate_key):print("Set GROUPDOCS_METERED_PUBLIC_KEY and GROUPDOCS_METERED_PRIVATE_KEY to apply a metered license.")return# Apply the metered keys before using any search featuresMetered().set_metered_key(public_key,private_key)print("Quantity:",Metered.get_consumption_quantity())print("Credit:",Metered.get_consumption_credit())if__name__=="__main__":set_metered_license()
Changing the license file name
You are not required to keep the license file name as GroupDocs.Search.lic. You can rename it to any preferred name and use that name when applying the license in your application.
“Cannot find license filename” exception
When you download the license from the GroupDocs website it is saved as GroupDocs.Search.lic. However, some web browsers may automatically append .xml, resulting in GroupDocs.Search.lic.xml.
If your Windows settings are configured to hide file extensions (the default), the file may still appear as GroupDocs.Search.lic in File Explorer even though the actual name is GroupDocs.Search.lic.xml. This discrepancy can cause set_license to raise an exception. To fix it, manually rename the file to remove the .xml extension, or disable “Hide extensions for known file types” in Windows.
How to evaluate GroupDocs.Search
You can evaluate GroupDocs.Search for Python via .NET without purchasing a license by using one of the following options.
Free Trial
The evaluation version is identical to the purchased one; it becomes fully licensed once you set a license. Its usage and functionality are the same, but without a license the following limits apply.
Indexing limits
The total number of indexed documents in one index or in all indexes of an index repository cannot exceed 100.
If adding documents would exceed this number, only the documents that fit into the limit are indexed. add() does not raise: the index’s error_occurred event reports “Number of indexed documents is restricted”.
All changed documents can be updated in an index during update.
New documents can be added to an index during update only while the total number of indexed documents is less than 100.
Indexes can be merged only if the total number of documents in the current index and in the merged indexes does not exceed 100. Otherwise, the merge method raises LicenseRestrictionException.
Search limits
Only the first 10 found documents can be retrieved from a search result. The document_count property returns the total number of found documents, but get_found_document raises LicenseRestrictionException (“Only first 10 results can be returned”) for a document number of 10 or greater. Therefore, in the evaluation mode, a loop over found documents must not exceed 10 iterations:
importosfromgroupdocs.searchimportIndexdefsearching_limitations():withIndex("./index")asindex:index.add("./documents")result=index.search("contract")# Only the first 10 found documents are available in the evaluation modecount=min(result.document_count,10)foriinrange(count):document=result.get_found_document(i)print(os.path.basename(document.document_info.file_path))if__name__=="__main__":searching_limitations()
A search network can contain only 1 shard and 1 extractor. If the configuration of the network contains more shards or extractors, the methods of the indexer and searcher nodes raise an exception.
Temporary License
To experience the complete features of GroupDocs.Search without the limitations of the Free Trial, you can request a 30-day “Temporary License”.
Was this page helpful?
Any additional feedback you'd like to share with us?
Please tell us how we can improve this page.
Thank you for your feedback!
We value your opinion. Your feedback will help us improve our documentation.
On this page
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.