-
Notifications
You must be signed in to change notification settings - Fork 0
Concept Phonetic Accent Search
Turkce Dokumantasyon | English Documentation
Category: Core Concepts & Architecture
Subsystem: Search & Localization Engine (AmberDB::Locale,AmberDB::Index)
Entry Type: Architectural Concept
Phonetic Accent Search and Linguistic Normalization is AmberDB's integrated full-text keyword indexing and querying subsystem (.src files).
Unlike standard search engines that require heavy external search daemons (like Elasticsearch or Solr), AmberDB embeds full-text search directly into the database engine, augmented with deep linguistic intelligence across 9 supported languages (en, tr, de, fr, es, ja, ru, ar, az).
AmberDB Token Normalization Pipeline
Raw Input: "Ahmet'in Âlâ Kitâbı & Dağcı Çadırı"
1. Apostrophe Stop-Word Stripping > "Ahmet Âlâ Kitâbı Dağcı Çadırı"
2. Circumflex / Accent Unfolding > "ahmet ala kitabi dagci cadiri"
3. Phonetic Devoicing (b/d/g->p/t/k) > "ahmet ala kitapi takci catiri"
4. Inverted Token Indexing (.src) > Instant multi-variant matching
-
Circumflex & Accent Unfolding: Automatically normalizes diacritical characters (e.g.
â/î/û->a/i/u,é/è/ê->e,ä/ö/ü->ae/oe/ueora/o/u). Searching"ala"matches"Âlâ". -
Phonetic Devoicing (Voiced to Voiceless Harmonization): Normalizes voiced consonants (
b/d/g/c->p/t/k/c). Searching"kitap"matches"kitabı". -
Language-Specific Case Folding: Correctly handles challenging locale boundaries, such as Turkish dotless/dotted
ı/Iandi/İ, preventing standard ASCII lowercase corruption. -
Apostrophe Suffix Removal: Automatically strips grammatical suffixes (e.g.
"Ahmet'in","İstanbul'da"->"ahmet","istanbul"). -
Prefix Wildcard Matching: Supports wildcard searches (e.g.
"kulak*"matching"kulaklık","kulaklığı").
# Configure locale language to Turkish
my $adb = AmberDB->new(
cfg => { language => "tr" },
path => { dbase_dir => "./dbstore" }
);
# Record inserted with accented and declined words:
# "İstanbul'daki Âlâ Kitap Kafe"
$adb->insert_id("shops", 0, "İstanbul'daki Âlâ Kitap Kafe", "Kadıköy");
# 1. Search with plain ASCII and unaccented query:
my ($count1, @res1) = $adb->search_table("shops", "istanbul ala");
# Matches successfully!
# 2. Search with devoiced/inflected form:
my ($count2, @res2) = $adb->search_table("shops", "kitabı");
# Matches successfully!AmberDB — High-Performance Schema-Driven NoSQL Database Engine for Perl.
Copyright 2005-2026 Maruf Cetin. Released under the Artistic License 2.0.
CPAN · GitHub Repository · Issue Tracker
- Berkeley DB (DB_File) Engine
- AmberDB Table Schema
- Global Flags
- Table Schema Flags
- Directory Structure
- File Structure (Extensions)
- Repeat Blocks
- Auto-Increment ID
- ASCII ID
- Relational Records
- Record Anatomy
- JOIN-Free Architecture
- Packed Binary Index
- Strict 2PL Locking
- Undo Journal & Rollback
- Tiered Junk Indexing
- Disjunctive Faceting
- Phonetic Accent Search
- 2-Pillar Disaster Recovery
- RAM-Disk Acceleration
- In-Memory Schema Mutation
- Simple Mode
- new
- config
- set_datadir
- insert_id
- insert_list
- modify_id
- modify_list
- delete_id
- delete_list
- read_id
- read_all
- read_list
- exist_id
- exist_list
- exist_table
- table_count
- table_keys
- table_lastid
- table_attr
- table_create
- field_fetch
- field_filter
- search_table
- facet_menu
- field_fltkeys
- field_allfltkeys
- facet_rules
- slug_read
- slug_fetch
- transact_start
- transact_end
- transact_commit
- transact_rollback
- transact_recover
- flock_open
- flock_close
- cache_setup
- cache_read
- cache_write
- cache_delete
- cache_preload
- cache_ensure
- buffer_write
- buffer_read
- buffer_delete
- recs_scan
- recs_get
- recs_put
- recs_del
- locale_uc
- locale_lc
- locale_sort
- locale_to_ascii
- locale_num2text
- locale_format_currency
- locale_format_date
- array_sort
- array_punch
- array_filter
- array_sublist
- deep_copy
- log_owner
- use_counter
- use_junk
- keep_deleted
- auto_id
- buffer_write
- simple
- no_write
- no_backup
- jnktype
- keys_only
- id_type
- language
- .db · .table · .dbase
- .inx · .fld · .src
- .fac · .srt · .slg
- .unq · .del · .aut
- .cnt · .txn · .amberdb
- .csv · .cache · .tmp