README file from
GithubMy Thesaurus
Automagically adds tags based on a thesaurus CSV or a Markdown table.
The plugin searches for the word or series of words in the header (properties), body and title of the note. The word searched for will be :
- Strictly (without right or left truncation),
- Case-insensitive (upper or lower case)
- Accent-sensitive (configurable)
[!TIP]
gamefindsGAMEorGamE.card gamefindsCard Gamebut notcards gamesgamewon't findgames,gamingorgameplaycafewill not findcafé.caféwill not findcafe.
📚 Thesaurus Format
The thesaurus must be a table with at last two columns: one for the terms and one for the synonyms. The first row must contain the column headers.
[!TIP]
The thesaurus can be a CSV file like this:Tag,Synonym computer,PC computer,machine computer,bikeOr in Markdown format:
| Tag | Synonym | |-----------|-----------| | computer | PC | | computer | machine | | computer | processor |
[!NOTE] If you choose to use a markdown file, the Markdown table must be the only content in the file. But, you can have a frontmatter at the beginning of the file.
You can have as many synonyms as you want for a term, but you need to duplicate the term in the first column. Moreover, a synonym can be associated with multiple terms, and the synonym can equal to the term itself.
⚙️ Settings
- Thesaurus: Path to the file containing the thesaurus. The file must be a CSV file and must be in your vault. You can click on the
savebutton to ensure the file is valid (the path is correct, the file exists, and it's well-formed).
[!CAUTION]
If, for some reason, the file is moved, you need to update the path in the settings! It won't be updated automatically.
- Separator: The separator used in the CSV file. Supported separators are
,,;,|,tabulationandmarkdown. See the note above for the markdown separator. - Column title: The title of the column in the CSV file that contains the tags:
- Term: Name of the tag column to be added
- Synonyms: Name of the column of words to be searched in the file (contents and file title).
- Included paths: Files in these folders will be included when using the command
My Thesaurus: Parse all files. You can separate the paths with a comma, semicolon, or newline. Moreover, regex is supported.
[!TIP]
You can include all the files in your vault by using.*as the path!
- Excluded terms: Allow to exclude term using a frontmatter key. Include two settings:
- Frontmatter key: The key to search in the frontmatter, by default
exclude_term - Auto-clean: If enabled, the plugin will clean the already existing tags with removing the excluded terms.
- Frontmatter key: The key to search in the frontmatter, by default
- Remove accents: If enabled, accents will be suppressed when searching for synonyms. Allows
caféto be recognized bycafe(and vice versa).
📝 Usage
The plugin has two commands:
- My Thesaurus: Parse all files: This command will parse all the files in the included paths and add the tags based on the thesaurus. At the end, a message will be displayed with the results, including:
- Errors: The files that encountered an error and the specific error message.
- Skipped files: The files that have been skipped because no synonym was found.
- Success: The files that have been successfully parsed, along with the tags that have been added.
- My Thesaurus: Parse current file: This command will parse the current file and add the tags based on the thesaurus.
📥 Installation
- From Obsidian's community plugins
- Using BRAT with
https://github.com/Mara-Li/ - From the release page:
- Download the latest release
- Unzip
my-thesaurus.zipin.obsidian/plugins/path - In Obsidian settings, reload the plugin
- Enable the plugin
🎼 Languages
- English
- French
To add a translation:
- Fork the repository
- Add the translation in the
src/i18n/localesfolder with the name of the language (ex:fr.json).- You can get your locale language from Obsidian using obsidian translation or using the commands (in templater for example) :
<% tp.obsidian.moment.locale() %> - Copy the content of the
en.jsonfile in the new file - Translate the content
- You can get your locale language from Obsidian using obsidian translation or using the commands (in templater for example) :
- Edit
i18n/i18next.ts:- Add
import * as <lang> from "./locales/<lang>.json"; - Edit the
ressourcepart with adding :<lang> : {translation: <lang>}
- Add
Credits
- Inspired by pmartinolli/MyThesaurus