不知道有没有人用notdeft,我尝试了下,结合xapian搜索很快,但是发现搜索不了中文.经过查找文档,找到了支持搜索中文的方法.
修改notdeft-xapian.cc文件中,把TermGenerator和QueryParser对象增加FLAG_CJK_NGRAM标记,重新编译,重建索引即可.
doIndex函数中
Xapian::TermGenerator indexer;
indexer.set_flags(Xapian::QueryParser::FLAG_CJK_NGRAM);
doSearch函数中
Xapian::QueryParser qp;
...
query = qp.parse_query(queryArg.getValue(), flags | Xapian::QueryParser::FLAG_CJK_NGRAM);
6 个赞
notdeft感觉挺酷,不过没太懂跟deft的区别。是1.搜索效率更高2.支持文件链接吗?
1.用上xapian后搜索比deft快,100个org文件,搜索几乎感觉不到什么延迟,更多文件的没测试过,毕竟xapian是C++写的搜索引擎,肯定是比deft快;
2.支持更多的查询条件,包括AND,OR,NOT,只搜文件名,只搜#+KEYWORDS关键词,只搜#+TITLE标题等;
3.支持多个搜索buffer;
4.支持设置多个目录;
文件链接指什么,软链接文件?
3 个赞
org文件多的时候,deft始终会卡那么一下的,现在新版本的deft为了不卡顿,可以设置两个变量:
deft-file-limit 限制显示的文件数量
deft-filter-only-filenames只搜索文件名
但是用上notdeft+xapian,可以不需要用deft了,不用xapian的话,效率和deft一样.
1 个赞
感谢,我打算尝试一下,链接是指org里的deft://
链接。
支持的,NotDeft | Tero Hasu
(require 'notdeft-org)
后支持deft链接
[[deft:notdeft.org]]
[[deft:notdeft-homepage.org::*Note Archival]]
[[deft:notdeft-homepage.org::#capture-protocol]]
1 个赞
這兩天才安裝好,沒發現不能搜索中文啊。直接可以搜索中文。
但是不能直接生成 中文的文件名?
比如,搜索「中文測試」,發現沒有內容,按回車自動新建文件,文件名是「deft–2019-12-17-09-29-15.org」,文件內容是「中文測試」。這個能設置嗎?英文文件名正常。
根據 https://www.gtrun.org/post/my-agenda/
先設置這樣:
- 支持中文搜索
(setenv “XAPIAN_CJK_NGRAM” “1”)
原来可以用setenv设置XAPIAN_CJK_NGRAM,那就不用改代码了.
自动创建中文文件名的问题,刚刚看了下el文件,看得不是很明白,但是尝试设置notdeft-notename-function
后,搜索回车,可以创建中文文件名,而不是Deft--日期.org
的文件名.
(setq notdeft-notename-function '(lambda (str) str))
可能是默认函数对中文处理得不好导致,所以重新设置一个返回str本身的函数.
1 个赞
notmuch
notdeft
主要是搜索快。
如果你用notmuch
就能看出点项目名的意思。 README 也提到了。
不过搜索文本文件,一个 counsel-ag
也够了
确实搜索不全,要把文件中的中文和英文用空格分开,然后调用notdef-reindex,才能搜索出来。
有个变量notdeft-xapian-max-results 默认值是100,可能和这个也有关系
设置这个notdeft-xapian-max-results为0后好像搜索正常了,不是中英文空格的问题。
1 个赞
成功,搞定,厉害!
授人以鱼,再请问大佬如何找到notdeft-xapian-max-results这个参数,我搜帮助,也只有两三次提到,并且也没有提到要设为0呢?
中文搜索不全这个问题以前就有发现过,当时以为是xapian的问题,就没去管了,一直用ag或者直接打开想看的文件。
这次你提到了,我就又试了一下,发现有的中文并不需要加空格也能搜索到,想到deft因为文件太多卡顿,后来有加过一个控制最多文件显示数量的变量来做优化,所以我猜测是不是notdeft是不是也有什么相关的变量。
C-h v找 notdeft的变量时,就看到这个notdeft-xapian-max-results,刚好又是100。
(defcustom notdeft-xapian-max-results 100
"Maximum number of Xapian query results.
\(I.e., '--max-count' for `notdeft-xapian-program'.)
No limit if 0."
:type 'integer
:safe 'integerp
:group 'notdeft)
描述中No limit if 0,于是设置成0,中文搜索就都有了。
这个变量可能是指所有文件中搜索结果出现的次数,当一个文件搜索到多次,多个文件,就很容易超过100了。
其实如果直接去看插件源码,更容易发现这个变量。
这次重新看文档:NotDeft | Tero Hasu
学会了前缀搜索,在每个org文件中指定#+TITLE和#+FILETAGS后,搜标题和tag很方便。
是在第一行,NOTDEFT:后面输入「 title: 搜索词」吗?