multi_language_search_engine 1.0.0 copy "multi_language_search_engine: ^1.0.0" to clipboard
multi_language_search_engine: ^1.0.0 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 #

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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
0
likes
150
points
144
downloads

Publisher

unverified uploader

Weekly Downloads

A powerful Flutter plugin for multi-language search with Arabic and English support, fuzzy matching, and typo tolerance.

Repository (GitHub)
View/report issues

Topics

#search #text-processing #arabic #fuzzy-search #localization

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on multi_language_search_engine

Packages that implement multi_language_search_engine