{"id":30889614,"url":"https://github.com/smourier/doxie","last_synced_at":"2026-03-14T10:41:34.986Z","repository":{"id":309236645,"uuid":"1024894836","full_name":"smourier/Doxie","owner":"smourier","description":"A search engine, local to your machine, focused on source (or textual information) code.","archived":false,"fork":false,"pushed_at":"2025-08-23T16:07:51.000Z","size":3542,"stargazers_count":22,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T06:07:23.617Z","etag":null,"topics":["lucene","lucene-net","monaco-editor","netcore","search","search-engine","sqlite","wpf"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smourier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-07-23T12:08:31.000Z","updated_at":"2025-08-23T16:06:28.000Z","dependencies_parsed_at":"2025-08-12T12:01:07.128Z","dependency_job_id":null,"html_url":"https://github.com/smourier/Doxie","commit_stats":null,"previous_names":["smourier/doxie"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/smourier/Doxie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smourier%2FDoxie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smourier%2FDoxie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smourier%2FDoxie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smourier%2FDoxie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smourier","download_url":"https://codeload.github.com/smourier/Doxie/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smourier%2FDoxie/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274210608,"owners_count":25241790,"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-09-08T02:00:09.813Z","response_time":121,"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":["lucene","lucene-net","monaco-editor","netcore","search","search-engine","sqlite","wpf"],"created_at":"2025-09-08T16:06:43.946Z","updated_at":"2026-03-14T10:41:29.932Z","avatar_url":"https://github.com/smourier.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Doxie\nA search engine, local to your machine, focused on source (or textual information) code.\n\n\u003cimg width=\"1002\" height=\"803\" alt=\"image\" src=\"https://github.com/user-attachments/assets/fbb72ff0-ccb2-4d8f-a905-ef7d818e2025\" /\u003e\n\n# Indexing\nThe application is written using the following technologies:\n\n* .NET 9\n* WPF (dark mode, high DPI support) for the UI framework\n* Lucene.NET for  the indexing and querying engine\n* SQLite (through [SQLNado](https://github.com/smourier/SQLNado))\n\nAn index is a .doxidx file which contains everything. This file is a SQLite file, Doxie stores all the Lucene index in it (it's a Lucene SQLite directory implementation).\nYou can copy the .doxidx file somewhere else if file paths are valid in both places where you open Doxie.\n\nAnd index contains any number of indexed local directories, and all files in these directories are indexed using the same criteria:\n* The file's path or name must match one of items from \"\"File inclusions or exclusions\" section. If this item is an exclusion criteria, it must not match it.\n* The file's containing directory name must not be listed in the \"Excluded directory names\" section.\n\nTo create an index you must:\n\n* Use the \"File\" menu, select \"Open or create an index...\"\n* Add one or more directories using the \"Add a directory to index...\" button, choose a directory\n* Click on this directory's \"Scan\" button in the list\n* The index will be created but by default, but no files will be put in it, since no file extensions are defined to be included in the index. Each time the directory is scanned, a \"batch\" will be associated (like a log of what happened). Older batch's related indexed data is deleted. Click on a directory to see its batches listed (latest first).\n* So, you can either add extensions specifically using the \"Add...\" in the \"\"File inclusions or exclusions\" section, or since the directory was scanned, use the \"View\" button in the \"Non-Indexed file extensions\" columns of the latest batch, and choose what extensions you want to add from there (file extensions are annotated with a \"perceived\" type that is more a hint):\n\n\u003cimg width=\"997\" height=\"801\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c1eafa9d-b216-4f70-b438-28f9ac7554f6\" /\u003e\n\nOnce you have added inclusion (and maybe exclusions) patterns, you can re-scan a specific directory or all directories using the \"Scan all directories\" button. Remember inclusions/exclusons and directory exclusion settings are global to the index, so to all directories.\n\nOther points of interest:\n* Doxie reopens the last used index automatically when the app is ran.\n* You can also drag \u0026 drop a .doxidx file on Doxie's window to open it.\n* From command line, you can also run `\"doxie.exe \u003csome file path\u003e\"` to open it.\n* All path treatments should be case-insensitive.\n* You can also exclude directory names from indexing, like \"obj\", \"bin\", \"debug\", \"release\", using the using the \"Add...\" in the \"Excluded directory names\" section.\n* You can add sub-directories of a parent directory in one shot using the \"Add multiple directories to index...\" button.\n* To re-use inclusions/exclusions pattern sets, you can copy a doxidx file somewhere else, open it and remove all directories from there.\n* You can use the Doxie project as a .NET reference and write other tools. Check the Doxie.Cli project for a small sample of this.\n\n\u003cimg width=\"999\" height=\"800\" alt=\"image\" src=\"https://github.com/user-attachments/assets/20ee2088-11e6-4669-8578-385281fa1604\" /\u003e\n\n\nIf you want for example to index all .js files but no .min.js files, you can add \".js\", and \"\\*.min.js\" and check 'Is exclusion' for the later. Note \"\\*.min.js\" starts with a \"\\*\" wich means \"end with .min.js\", instead of using the file extension in Windows terms.\n\n\u003cimg width=\"336\" height=\"239\" alt=\"image\" src=\"https://github.com/user-attachments/assets/0a3311d9-0f10-4222-805c-ac4fbfa0073f\" /\u003e\n\nExclusions are shown with a red background:\n\n\u003cimg width=\"463\" height=\"213\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c22a6354-483f-44cd-be78-f9ee6dee691f\" /\u003e\n\n# Querying\nThe query window will give you the relative paths that matched the query, and you can click on a result and display the source. The source is supposed to be present on your machine (it's *not* stored in the index). Right clicking on a path will display a context menu that allows you to open it using the Windows Shell or open its containing folder.\n\nThe selected source code is displayed using the [Monaco Editor](https://microsoft.github.io/monaco-editor/) so it's capable of some syntax coloring, and has a minimap for quick overview, among other features. All hits in source window are surrounded by yellow boxes and you can navigate from hit to hit.\n\nBy default, no wildcard is appended automatically in the query field, so when you type \"IShellItem\", it will only match \"IShellItem\" words in the index. Just use \"IShellItem*\" to match all texts starting with \"IShellItem\". You can also use a leading wildcard, ie: \"\\*IShellItem*\".\n\n\u003cimg width=\"1181\" height=\"853\" alt=\"image\" src=\"https://github.com/user-attachments/assets/b3b6421d-1f7a-4cbd-850a-153f78411ed0\" /\u003e\n\nSince the index uses Lucene, you can refer to [Apache Lucene - Query Parser Syntax](https://lucene.apache.org/core/2_9_4/queryparsersyntax.html) for all query syntax options.\n\nFor example in the following example, the \"embedded sample code AND path:rea\\*\" query will search on various texts and on the relative path (parsed as a list of tokens). Note the AND token *must* be UPPERCASE for it to work:\n\n\u003cimg width=\"1278\" height=\"820\" alt=\"Screenshot 2025-08-13 130624\" src=\"https://github.com/user-attachments/assets/96016ea6-d523-4e03-9297-aaa71d289a97\" /\u003e\n\nAvailable text fields are \"path\" (the relative path) and \"ext\" (the file's extension).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmourier%2Fdoxie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmourier%2Fdoxie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmourier%2Fdoxie/lists"}