Using Personal Custom Dictionary with Aspell and Pspell
Lately I was building a spell checker with PHP and I wanted to use my own dictionary with only specific words. Pspell in PHP sounded like the easiest way, however, by default, Pspell uses Aspell’s dictionary.
In this post, I’m going to show you how to disable the default Aspell dictionary and use a custom made dictionary instead.
Requirements:
- Root access to your Linux server.
- Aspell already installed (This should be super easy on CentOS and Ubuntu)
- Aspell language dictionary installed
- PHP Pspell extension enabled
In Your Server’s Terminal
Let’s find where the default data directory is:
aspell config
Look for data-dir entry for the path, it’s usually /usr/lib64/aspell-0.60 on CentOS 7, and navigate to it
cd /usr/lib64/aspell-0.60
Create a new default wordlist, with at least 1 word
vim wordlist
Add 1 word, press “i” to write, and “wq” to exit back to command line
I’ll create a new master dictionary called en_techdev (English language)
aspell --lang=en create master ./en_techdev.rws < wordlist
vim en_techdev.multi
And add the following
add en_techdev.rws
Run
aspell -d en_techdev.rws -l en config
You will see the new master dictionary is our en_techdev.rws
You can use dump dicts to view your new dictionary
aspell dump dicts
PHP
In PHP, just use it as follows
<?php
$pspell_link = pspell_new(“en_techdev”);
You can add a new list to the dictionary
$pspell_config = pspell_config_create("en_TECHDEV");
pspell_config_personal($pspell_config, “/path/toYourWebsiteDir/pspell/en_techdev.pws”);
$pspell_link = pspell_new_config($pspell_config);
pspell_add_to_personal($pspell_link, “newWord”);
pspell_add_to_personal($pspell_link, “newWord2”);
pspell_save_wordlist($pspell_link);