{"id":19052951,"url":"https://github.com/kayvansol/parsianalyzer","last_synced_at":"2026-05-03T11:33:54.936Z","repository":{"id":245604886,"uuid":"818735785","full_name":"kayvansol/ParsiAnalyzer","owner":"kayvansol","description":"Persian Analyzer For Elasticsearch","archived":false,"fork":false,"pushed_at":"2024-06-23T17:10:09.000Z","size":740,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-22T00:44:19.953Z","etag":null,"topics":["analisis","analizer","docker-compose","eclipse","elasticsearch","java","kibana","lucene","lucene-analyzer","persian","persian-language"],"latest_commit_sha":null,"homepage":"https://medium.com/@kayvan.sol2/persian-analyzer-for-elasticsearch-fc63ac0bc415","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kayvansol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-22T17:55:02.000Z","updated_at":"2025-01-15T07:36:53.000Z","dependencies_parsed_at":"2024-06-23T01:22:30.538Z","dependency_job_id":"2d772f55-335c-47b1-8707-4ab3c523f68b","html_url":"https://github.com/kayvansol/ParsiAnalyzer","commit_stats":null,"previous_names":["kayvansol/parsianalyzer"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kayvansol/ParsiAnalyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayvansol%2FParsiAnalyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayvansol%2FParsiAnalyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayvansol%2FParsiAnalyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayvansol%2FParsiAnalyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kayvansol","download_url":"https://codeload.github.com/kayvansol/ParsiAnalyzer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kayvansol%2FParsiAnalyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284021192,"owners_count":26933845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-12T02:00:06.336Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analisis","analizer","docker-compose","eclipse","elasticsearch","java","kibana","lucene","lucene-analyzer","persian","persian-language"],"created_at":"2024-11-08T23:28:33.243Z","updated_at":"2025-11-12T11:02:52.293Z","avatar_url":"https://github.com/kayvansol.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Persian Analyzer For Elasticsearch\n\n# ParsiAnalyzer\nParsiAnalyzer is an analysis plugin for Elasticsearch. Analysis is a process that consists of the following steps:\n\n- Tokenizing a block of text into individual terms\n- Normalizing these terms into a standard form\n\nAn analyzer is really just a wrapper that combines Character filters, Tokenizer, and Token filters. Elasticsearch provides many Built-in Analyzers but there's still room for improvement especially for Persian language. This plugin provides tools for tokenizing, normalizing and stemming Persian text.\n\n## Key features\n- Tokenize Persian text\n  - Convert whitespaces to zero width nonjoiner (`نیم‌فاصله`) whenever it is necessary. for example,`می رود` to `می‌رود`.\n  - Convert Persian punctuations to their English equivalent. for example,`۳/۱۴` to `۳.۱۴`\n  - Tokenize Persian text by whitespaces and punctuations.\n  \n- Normalize Persian tokens into a single canonical form\n  - Transform all forms of Yeh, Kaf, Heh, and Hamza to a unique form. for example,`براي` to `برای`.\n  - Convert all Persian and Arabic numbers to their English equivalent. for example,`۱۴۳` to `143`.\n  - Remove diacritic (`اِعراب`) from words. for example, `اَرّه` to `اره`.\n  - Remove Kashida form words. for example, `بادبــــــادک` to `بادبادک`.\n  \n- Remove common Persian stop words\n  - Persian stop words like `از`, `به` and etc will be removed.\n  \n- Stem Persian words\n  - Remove common Persian suffixes. for example, `ها` or `ان`.\n  \n## Installation\nTo install the plugin for Elasticsearch 8.13.4, run this command:\n\n```bin\\elasticsearch-plugin install file:///path/to/ParsiAnalyzer.zip```\n\n## Build\nIf you want to build ParsiAnalyzer for any specific version of Elasticsearch, follow these steps:\n1. Make sure you've installed JDK and Maven on your computer\n2. Clone project from https://github.com/NarimanN2/ParsiAnalyzer.git\n3. Open ```pom.xml```\n4. Under dependencies tag, change Elasticsearch version to your desired version\n5. Open ```plugin-descriptor.properties```\n6. Change elasticsearch.version to your desired version\n7. Build and Run maven project with Goals ```package```\n8. In the target/releases folder, you’ll now find a zip file. install the plugin using this command:\nbash```bin/elasticsearch-plugin install file:///path/to/ParsiAnalyzer.zip```\n\n## The steps are as the following :\n\nNote : for establish a ELK Stack, refer to my [github](https://github.com/kayvansol/elasticsearch/)\n\nall commands are present  at [commands](https://github.com/kayvansol/ParsiAnalyzer/blob/main/commands.txt)\n\nChange Elasticsearch version to 8.13.4 :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/pom.png?raw=true)\n\n\u0026\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/descriptor.png?raw=true)\n\n**Build** the project :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/build.png?raw=true)\n\nthe related packages appear after downloading :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/NewDependency.png?raw=true)\n\n**Run** the app with goal of **package** :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/build1.png?raw=true)\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/build2.png?raw=true)\n\nat final :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/build3.png?raw=true)\n\nthe zip file is present at target/releases folder :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/release.png?raw=true)\n\nNote: you can reach this file at [release](https://github.com/kayvansol/ParsiAnalyzer/releases/download/v1.0.0/ParsiAnalyzer-1.0-SNAPSHOT.zip) at my github.\n\n**upload** zip file inside `elasticsearch` container :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/uploadzip.png?raw=true)\n\ninstall the plugin for Elasticsearch 8.13.4 inside `elasticsearch` container :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/install.png?raw=true)\n\ntest the installed analyzer with `kibana` after restart the elasticsearch container, you can use Elasticsearch's `analyze` API :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/post.png?raw=true)\n\ncreate your `index` with the analyzer, ParsiAnalyzer can be specified directly in the field mapping as follows :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/createindex.png?raw=true)\n\ninsert data to the index :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/insertdata.png?raw=true)\n\nsearch :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/search.png?raw=true)\n\nget with analyzer :\n\n![alt text](https://raw.githubusercontent.com/kayvansol/ParsiAnalyzer/main/img/getwithanalyzer.png?raw=true)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkayvansol%2Fparsianalyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkayvansol%2Fparsianalyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkayvansol%2Fparsianalyzer/lists"}