multi_language_search_engine 1.0.1  multi_language_search_engine: ^1.0.1 copied to clipboard
multi_language_search_engine: ^1.0.1 copied to clipboard
A powerful Flutter plugin for multi-language search with Arabic and English support, fuzzy matching, and typo tolerance.
Multi-Language Search Engine #
A powerful Flutter plugin for implementing multi-language search functionality with support for Arabic and English text, fuzzy matching, and typo tolerance.
Features #
- 🔍 Multi-language support: Arabic and English text processing
- 🎯 Fuzzy search: Handles typos and similar words
- ⚡ Fast indexing: Inverted index for quick searches
- 🎨 Extensible architecture: Clean interfaces for customization
- 📱 Flutter integration: Easy to use in Flutter applications
- 🧪 Well-tested: Comprehensive test coverage
Installation #
Add this to your pubspec.yaml:
dependencies:
  multi_language_search_engine: ^1.0.0
Then run:
flutter pub get
Quick Start #
import 'package:multi_language_search_engine/multi_language_search_engine.dart';
void main() {
  // Sample data
  final data = [
    {'id': 1, 'name': 'John Doe', 'description': 'Software Engineer'},
    {'id': 2, 'name': 'Jane Smith', 'description': 'Product Manager'},
    {'id': 3, 'name': 'أحمد محمد', 'description': 'مطور برمجيات'},
  ];
  // Create search engine for English
  final englishEngine = createSearchEngine(
    data: data,
    languageCode: 'en',
  );
  // Search
  final results = englishEngine.search('software');
  print('Found ${results.length} results');
  // Create search engine for Arabic
  final arabicEngine = createSearchEngine(
    data: data,
    languageCode: 'ar',
  );
  final arabicResults = arabicEngine.search('مطور');
  print('Found ${arabicResults.length} Arabic results');
}
Advanced Usage #
Custom Components #
You can create custom implementations by implementing the interfaces:
class CustomNormalizer implements TextNormalizer {
  @override
  String normalize(String text) {
    // Your custom normalization logic
    return text.toLowerCase();
  }
  @override
  bool get supportsArabic => false;
}
class CustomFactory implements SearchEngineFactory {
  @override
  TextNormalizer createNormalizer(String languageCode) {
    return CustomNormalizer();
  }
  // Implement other factory methods...
}
Using Custom Factory #
final customFactory = CustomFactory();
final searchEngine = createSearchEngine(
  data: data,
  languageCode: 'en',
  factory: customFactory,
);
Language Support #
English #
- Case-insensitive search
- Punctuation removal
- Typo tolerance (a↔e, i↔y, etc.)
- Plural/singular variations
Arabic #
- Diacritic removal (Tashkeel)
- Letter normalization (أ→ا, إ→ا, etc.)
- Arabic-specific typo variations
- Right-to-left text support
API Reference #
SearchEngine Interface #
abstract class SearchEngine {
  List<Map<String, dynamic>> search(String query);
  int get itemCount;
  bool get isInitialized;
  String get languageCode;
  Future<void> initialize(List<Map<String, dynamic>> data);
}
Factory Methods #
SearchEngine createSearchEngine({
  required List<Map<String, dynamic>> data,
  required String languageCode,
  SearchEngineFactory? factory,
});
Performance #
- Indexing: O(n) where n is the number of documents
- Search: O(k) where k is the number of matching documents
- Memory: Efficient inverted index structure
Testing #
Run the tests:
flutter test
Contributing #
- Fork the repository
- Create your feature branch (git checkout -b feature/amazing-feature)
- Commit your changes (git commit -m 'Add amazing feature')
- Push to the branch (git push origin feature/amazing-feature)
- Open a Pull Request
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Support #
For questions and support:
- Create an issue on GitHub
- Check the documentation folder
- Review the example project