Xeku.FullTextSearch
0.0.0.7
dotnet add package Xeku.FullTextSearch --version 0.0.0.7
NuGet\Install-Package Xeku.FullTextSearch -Version 0.0.0.7
<PackageReference Include="Xeku.FullTextSearch" Version="0.0.0.7" />
<PackageVersion Include="Xeku.FullTextSearch" Version="0.0.0.7" />
<PackageReference Include="Xeku.FullTextSearch" />
paket add Xeku.FullTextSearch --version 0.0.0.7
#r "nuget: Xeku.FullTextSearch, 0.0.0.7"
#:package Xeku.FullTextSearch@0.0.0.7
#addin nuget:?package=Xeku.FullTextSearch&version=0.0.0.7
#tool nuget:?package=Xeku.FullTextSearch&version=0.0.0.7
Xeku.FullTextSearch
A global full-text search module for DevExpress XAF applications. Search across all business objects from a single entry point.
Features
- Global Search: Search across all persistent business objects with a single keyword
- Platform Support: Works on both Blazor and WinForms platforms
- Smart Placement: Automatically positions the search action based on platform (QuickAccess for Blazor, Tools toolbar for WinForms)
- Performance Safeguards: Configurable limits per type and total results
- Double-Click Navigation: Click on a search result to open the target object
- Opt-In Attribute Control: Use
[GlobalSearchable]to enable types for search
Installation
1. NuGet Package
dotnet add package Xeku.FullTextSearch
2. Add Module Reference
// In your Module.cs
RequiredModuleTypes.Add(typeof(Xeku.FullTextSearch.FullTextSearchModule));
Then, add the platform-specific module to your Blazor or WinForms project:
Blazor
Add Xeku.FullTextSearch.Blazor to your Blazor module or application:
// In your BlazorModule.cs
RequiredModuleTypes.Add(typeof(Xeku.FullTextSearch.Blazor.FullTextSearchBlazorModule));
WinForms
Add Xeku.FullTextSearch.Win to your WinForms module or application:
// In your WinModule.cs
RequiredModuleTypes.Add(typeof(Xeku.FullTextSearch.Win.FullTextSearchWinModule));
Usage
- Launch your XAF application
- Look for the Global Search action:
- Blazor: Located in the header near the user icon (QuickAccess), Action ID:
GlobalSearchBlazor - WinForms: Located in the Tools toolbar, Action ID:
GlobalSearchWin
- Blazor: Located in the header near the user icon (QuickAccess), Action ID:
- Enter your search keyword and press Enter
- Click on any result to navigate to that object
Configuration
Enable Types for Search (Opt-In)
Important: Types are NOT searchable by default. You must explicitly mark types with
[GlobalSearchable]to include them in search.
using Xeku.FullTextSearch.Attributes;
// Enable this type for global search
[GlobalSearchable]
public class Customer : BaseObject
{
public string Name { get; set; }
public string Email { get; set; }
}
Exclude Specific Properties
Use [GlobalSearchableProperty(false)] to exclude specific properties from search:
[GlobalSearchable]
public class Customer : BaseObject
{
public string Name { get; set; }
[GlobalSearchableProperty(false)]
public string InternalNotes { get; set; } // Won't be searched
}
Customize Search Limits
Modify GlobalSearchService properties:
var searchService = new GlobalSearchService(objectSpace, typesInfo)
{
MaxResultsPerType = 50, // Max results per object type
MaxTotalResults = 200 // Total max results
};
Projects & Architecture
| Project | Description |
|---|---|
Xeku.FullTextSearch |
Core logic, Service, and Base Controller |
Xeku.FullTextSearch.Blazor |
Blazor platform integration and QuickAccess Action |
Xeku.FullTextSearch.Win |
WinForms platform integration and Tools Action |
Key Files
| File | Description |
|---|---|
FullTextSearchModule.cs |
Core XAF module definition |
GlobalSearchResult.cs |
Non-persistent result object |
GlobalSearchService.cs |
Core search logic with optional caching |
GlobalSearchController.cs |
Base abstract controller |
GlobalSearchResultNavigationController.cs |
Result navigation |
Cache Integration (Optional)
Integrate with Xeku.Cache for improved search performance:
// With caching
var searchService = new GlobalSearchService(objectSpace, typesInfo, cacheService)
{
SearchResultsCacheDuration = TimeSpan.FromMinutes(5),
SearchableTypesCacheDuration = TimeSpan.FromMinutes(10)
};
// Async search for better cache performance
var results = await searchService.SearchAsync("keyword");
Cache Keys
| Cache Key | TTL | Description |
|---|---|---|
fts:searchable-types |
10 min | List of searchable type names |
fts:search:{keyword} |
5 min | Search results for keyword |
Requirements
- DevExpress XAF 22.2+
- .NET 8.0+
- Xeku.Cache (optional, for caching support)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- DevExpress.ExpressApp (>= 25.2.3)
- DevExpress.ExpressApp.Xpo (>= 25.2.3)
- DevExpress.Persistent.Base (>= 25.2.3)
- Xeku.Cache (>= 0.0.0.7)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Xeku.FullTextSearch:
| Package | Downloads |
|---|---|
|
Xeku.Notes
Xeku Notes module for hierarchical note management. |
|
|
Xeku.FullTextSearch.Blazor
XAF Blazor Server integration for Xeku.FullTextSearch. |
|
|
Xeku.FullTextSearch.Win
XAF WinForms integration for Xeku.FullTextSearch. |
|
|
Xeku.FullTextSearch.WebApi
Web API extensions for the Xeku.FullTextSearch module. |
GitHub repositories
This package is not used by any popular GitHub repositories.