Compare commits
5 Commits
61a3089c09
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 5e5708de4e | |||
| 70deab0b77 | |||
| 269a1e6ea4 | |||
| 9e68a725d0 | |||
| 44da87a29d |
69
README.md
69
README.md
@@ -1,17 +1,18 @@
|
|||||||
# Tannersearch for Obsidian
|
# Tannersearch for Obsidian
|
||||||
|
|
||||||
This is a fork of [obsidian-omnisearch](https://github.com/scambier/obsidian-omnisearch) by [@scambier](https://github.com/scambier) with the following changes:
|
This is a fork of [obsidian-omnisearch](https://github.com/scambier/obsidian-omnisearch) (by [@scambier](https://github.com/scambier)) with the following changes:
|
||||||
|
|
||||||
- when opening a result, the cursor placement offset prioritizes note titles, headings, then content
|
When opening a result, the cursor placement prioritizes note titles over headings over content
|
||||||
- this means if the note's name matches your search, it opens at the top
|
- this means if the note's name matches your search, it opens at the top instead of on a random match in the middle of the note
|
||||||
- search terms aren't split on apostrophes
|
|
||||||
- searching for "Sun's BBQ" searches for ["Sun's", "BBQ"] instead of ["Sun", "s", "BBQ"]
|
Search terms aren't split on apostrophes
|
||||||
- searches aren't HTML escaped
|
- searching for "Sun's BBQ" searches for ["Sun's", "BBQ"] instead of ["Sun", "s", "BBQ"]
|
||||||
- before searching for "Sun's BBQ" would actually search for `Sun's BBQ`
|
|
||||||
- search terms less than 3 characters long or common words are ignored
|
Search terms less than 3 characters long or common words are ignored
|
||||||
- ignored words: "a", "an", "the", "and", "or", "but", "if", "in", "on", "at", "by", "for", "with", "to", "from", "of", "is", "it", "that", "this"
|
- ignored words: "a", "an", "the", "and", "or", "but", "if", "in", "on", "at", "by", "for", "with", "to", "from", "of", "is", "it", "that", "this"
|
||||||
- the first line of a paragraph is ranked like Heading 3 if it ends in a colon
|
|
||||||
- for example,
|
The first line of a paragraph is ranked like Heading 3 if it ends in a colon
|
||||||
|
- for example,
|
||||||
|
|
||||||
```
|
```
|
||||||
Japan trip:
|
Japan trip:
|
||||||
@@ -22,6 +23,52 @@ Japan trip:
|
|||||||
|
|
||||||
... "Japan trip:" is indexed and ranked the same as "### Japan trip"
|
... "Japan trip:" is indexed and ranked the same as "### Japan trip"
|
||||||
|
|
||||||
|
If the first paragraph of a note contains a line like "aka other name", then "other name" is ranked like H1
|
||||||
|
- for example,
|
||||||
|
|
||||||
|
```
|
||||||
|
see also: [[Travel General]]
|
||||||
|
Aka: packing list
|
||||||
|
|
||||||
|
content
|
||||||
|
```
|
||||||
|
|
||||||
|
... "packing list" is indexed and ranked the same as "# packing list". Note that "Aka:" isn't case or colon sensitive.
|
||||||
|
|
||||||
|
|
||||||
|
### Fork Installation
|
||||||
|
|
||||||
|
Ensure the original Omnisearch plugin is installed, see instructions below.
|
||||||
|
|
||||||
|
Download main.js into your `.obsidian/plugins/omnisearch` directory, example:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd ~/notes/.obsidian/plugins/omnisearch
|
||||||
|
$ mv main.js main.js.bak
|
||||||
|
$ wget https://raw.githubusercontent.com/tannercollin/obsidian-tannersearch/refs/heads/master/dist/main.js
|
||||||
|
```
|
||||||
|
|
||||||
|
In Obsidian, open Settings > Community Plugings. Disable and enable Omnisearch.
|
||||||
|
|
||||||
|
Open Settings > Omnisearch. Scroll to bottom. Click "Clear cache" data.
|
||||||
|
|
||||||
|
Restart Obsidian.
|
||||||
|
|
||||||
|
Note: on mobile you'll have to use some sort of sync or downloader and move the main.js over to your vault.
|
||||||
|
|
||||||
|
### Building the Fork
|
||||||
|
|
||||||
|
If you'd rather build the fork yourself:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone https://github.com/tannercollin/obsidian-tannersearch.git
|
||||||
|
$ cd obsidian-tannersearch/
|
||||||
|
$ npm install --legacy-peer-deps
|
||||||
|
$ npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
Then copy `dist/main.js` as above.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Original README
|
# Original README
|
||||||
|
|||||||
187
dist/main.js
vendored
Normal file
187
dist/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -233,6 +233,12 @@ export class DocumentsRepository {
|
|||||||
const headings2 = metadata ? extractHeadingsFromCache(metadata, 2) : []
|
const headings2 = metadata ? extractHeadingsFromCache(metadata, 2) : []
|
||||||
const headings3 = metadata ? extractHeadingsFromCache(metadata, 3) : []
|
const headings3 = metadata ? extractHeadingsFromCache(metadata, 3) : []
|
||||||
|
|
||||||
|
const akaHeadings: string[] = content
|
||||||
|
.split(/\n\s*\n/)[0]
|
||||||
|
.split('\n')
|
||||||
|
.map(line => line.match(/^aka:?\s*(.+)$/i)?.[1]?.trim())
|
||||||
|
.filter((heading): heading is string => !!heading)
|
||||||
|
|
||||||
const lines = content.split('\n')
|
const lines = content.split('\n')
|
||||||
const colonHeadings: string[] = []
|
const colonHeadings: string[] = []
|
||||||
for (let i = 0; i < lines.length; i++) {
|
for (let i = 0; i < lines.length; i++) {
|
||||||
@@ -263,7 +269,7 @@ export class DocumentsRepository {
|
|||||||
tags: tags,
|
tags: tags,
|
||||||
unmarkedTags: tags.map(t => t.replace('#', '')),
|
unmarkedTags: tags.map(t => t.replace('#', '')),
|
||||||
aliases: getAliasesFromMetadata(metadata).join(''),
|
aliases: getAliasesFromMetadata(metadata).join(''),
|
||||||
headings1: headings1.join(' '),
|
headings1: [...headings1, ...akaHeadings].join(' '),
|
||||||
headings2: headings2.join(' '),
|
headings2: headings2.join(' '),
|
||||||
headings3: [...headings3, ...colonHeadings].join(' '),
|
headings3: [...headings3, ...colonHeadings].join(' '),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user