Recoll用戶手冊翻譯,Recoll user manual
這篇文檔介紹全文搜索概念,并講解Recoll 程序的安裝和使用。它當前針對的是Recoll 1.16。
如果妳不喜歡讀手冊(哪個喜歡?),又想試試Recoll 的話,那麽直接安裝并啟動recoll 界面吧。默認情況下,它會索引妳的家目錄,在索引完畢之後妳就能進行搜索咯。
如果妳面臨以下問題,那麽就不要做上面那件事:妳的家目錄裏有海量的文件,而妳又不想等它索引完或者妳根本就沒有足夠的硬盤空間。如果是這樣的話,那麽妳可能需要先修改一下配置文件,以限制它索引的區域。
還有,對于某些類型的文檔,可能需要安裝適當的支持程序。
Recoll是一個全文搜索程序。全文搜索程序讓妳能夠通過內容來找到妳的數據,而不是通過外部屬性(比如文件名)來找。再細致點說,它們使得妳能夠指定哪些詞語應當出現在妳要找的文件中,哪些詞語不應當出現,然後返回一組符合條件的文檔,最相關 的文檔會出現在最前面。
妳不需要記住妳的某個重要信息是保存在哪封郵件或者哪個文件裏。妳只需要提供一些相關詞語,這個工具會按照這些詞語在文檔中的重要性來返回一組文檔,就像互聯網搜索引擎那樣。
搜索程序會努力計算出哪些文檔與妳提供的搜索詞語最相關。用來計算相關性的電腦算法都非常復雜,而且跟人腦那迅速確定相關性的能力相比,普遍差遠咯。對于相關性的猜測的准確度可能是評估一個搜索程序的最重要因素咯。
好多情形中,妳都是要尋找一個單詞的所有時態,而不只是自己輸入的指定時態。這些不同時態可以包括:復數、動詞的不同時態、從相同的詞根派生的詞語(比如:floor、floors、floored、flooring...)。搜索程序通常會將查詢條件擴展到所有這些相關詞語(經過縮減之後得到相同的詞根)上,并且還提供一個功能讓妳能夠關掉這種擴展,以讓妳搜索某個確定的單詞。
詞根計算過程本身不會與拼寫檢查或語音搜索技術相配合。Recoll 通過一個特殊工具( 單詞探索器 )來支持這些特性,它使得妳可以按照不同模式來探索已索引的單詞集合。
Recoll使用 Xapian 信息提取庫作為自己的存儲和提取引擎。Xapian 是一個非常成熟的軟件包,它使用的是一個高端的概率分級模型。Recoll 提供咯將數據放入這個系統的機制及從中取出數據的界面。
實際運行過程中,Xapian 會記錄哪些詞語在妳的文檔中的哪些位置出現。這個過程叫做索引。
獲得的索引可能會非常大(大約就是與原始文檔相同的大小),但是這并不是簡單地將文檔打包到一起。Recoll只能顯示那些仍然位于它們被索引的位置的文檔。(事實上,有一些手段可以從索引中的信息裏面重構一個文檔,但是重構的結果是不理想的,因為所有的格式變化、標點變化和大小寫變化都丟失咯)。
Recoll以統一碼UTF-8 格式來儲存內部數據,并且可以對擁有不同字符集、編碼和語言的文件進行索引,并且將其信息儲存在同一個索引中。它擁有針對許多不同文檔類型的輸入過濾器。
詞根計算依賴于文檔所用的自然語言。Recoll儲存咯詞語的詞根,然後使用輔助數據庫來對詞語進行詞根擴展。它可以在無需重新索引的情況下切換詞根語言或添加一種新的語言。在同一個索引裏儲存不同語言的文檔是可能的,而且這樣做是有實用好處的,但是可能會引起誤解。Recoll目前不進行語言的自動識別。
Recoll有很多參數,它們定義的是:要索引什麽、如何對源文檔進行分類及解碼。這些東西都在配置文件裏。在安裝的時候會有一個默認配置文件被復制到一個標准的位置(通常是 /usr/[local/]share/recoll/examples)。這個文件中的默認參數可以被妳在自己的配置文件中設置的值覆蓋,而妳自己的配置文件也有默認位置:妳的家目錄中的.recoll子目錄。默認的配置文件會按照默認參數來對妳的家目錄進行索引,對于試用Recoll 來說應當足夠咯,但是妳以後可能想要調節其中的參數。
當妳第一次執行recoll 搜索圖形界面時,索引就會自動啟動,或者妳可以直接執行 recollindex 命令。
搜索通常是在recoll 圖形界面(GUI)中進行的,它含有好多選項,可助妳找到妳想找的東西。然而,還有其它方法來進行Recoll 搜索:主要是一個命令行工具、一個 Python 編程接口和一個 KDE KIO從屬模塊。
索引就是對文檔進行分析并且將數據保存到數據庫中去的過程。Recoll 的索引過程通常是增量的:文檔只有在被修改過之後才會被處理。當然,在第一次執行的時候,所有的文檔都需要處理。以後仍然可以通過向索引命令指定某個參數(recollindex -z)來強制讓它重新進行完整的索引。
Recoll 索引可用兩種方法來進行:
•. 間斷式索引:隨時執行recollindex 以進行索引。典型的應用就是在cron 文件中加上一個任務,以在夜裏進行索引。
•. 實時索引:一旦某個文件被創建被修改就會進行索引。recollindex 作為一個守護進程運行,并且使用像inotify、Fam 或Gamin 這樣的文件系統變化監視器來檢測到文件的變化。
兩種方法之間的抉擇主要是一個個人喜好問題,而且可以通過設置多個索引來將它們結合在一起(也就是說:對大的文件目錄使用間斷式索引,對小的家目錄使用實時索引)。監視一個巨大的文件系統樹會消耗相當多的系統資源。
Recoll 認識好多種文檔。關于文檔類型識別和處理的參數是在配置文件中設置的。
大部分的文件類型,比如說HTML 或文字處理文件,都只包含一個文檔。某些文件類型,比如說郵件文件夾文件或壓縮文件,可能會包含很多單個的被索引文檔,而那些文檔本身又有可能是復合類型。這種層次結構可能會很深,而Recoll 在處理這種文件時毫無壓力。
Recoll 在索引過程中能夠自行處理純文本文件、HTML 、openoffice 文件和郵件文件(事實上還有一切其它的)。
其它文件類型(也就是說:postscript、pdf……)需要外部程序來進行預處理。這些類型的列表位于安裝小節。在每次索引操作完成之後,Recoll會更新一個命令列表,它們是用來索引已存在的文件類型時需要的命令。這個列表可通過recoll 的File 菜單顯示。它是保存在配置文件目錄中的missing 文件裏。
不做額外配置的話,Recoll 會按照一些合理的默認參數對妳的家目錄中的所有相關文件進行索引。
在某些情況下,可能需要將文件系統中不同的部分索引到不同的數據庫裏去。妳可以利用多個配置文件目錄來做到這一點,每個配置文件目錄將一個文件系統區域索引到一個特定數據庫裏。參考關于使用多 個數據庫的小節,以了解更多關于多個配置文件目錄和索引的信息。
在極端情況下,索引可能會損壞(症狀就是怪异的搜索結果,或者程序崩潰),那就需要先刪除索引文件,再重新進行一次索引。只需要刪除 xapiandb 目錄(參考下一小節),或者以-z參數啟動recollindex,它會在索引之前重置數據庫。
默認的索引數據存儲位置就是Recoll 配置文件目錄的xapiandb 子目錄,一般是$HOME/.recoll/xapiandb/。可通過兩種方式(目的也不同)改變這一點:
•.妳可設置RECOLL_CONFDIR 環境變量來指定一個不同的配置文件目錄,或者對Recoll 命令使用-c參數。這個方法一般用來將文件系統中不同的部分索引到不同的數據庫裏。比如,如果妳執行以下命令:
export RECOLL_CONFDIR=~/.indexes-email
recoll
那麽,Recoll 會使用~/.indexes-email/中的配置文件,并且(除非在recoll.conf中另外指定)會在~/.indexes-email/xapiandb/中尋找索引。
使用多個配置文件目錄和配置選項,允許妳控制哪些數據可以被搜索到。
•.妳可以通過設置配置文件中的dbdir 參數(參考配置小節)來指定一個不同的位置來存儲索引。這種方法的主要目的是,將配置文件放在默認的位置,而將索引放在其它位置,以免消耗存儲空間。
索引的大小取決于文檔的大小,但是它們之間的比例并不確定。對于常見的混合型的文檔集合,索引的大小通常與數據集的大小相近。在特定情況下(比如一組壓縮過的郵箱文件),索引可能會比文檔大得多。如果文檔裏面有大量的圖片或者其它不可索引的數據(極限例子:一組mp3 文件,其中只有標簽可被索引),那麽索引也可能小得多。
當然,圖片、聲音和視頻不會增加索引的大小。這就意味著,在這個坑爹的年代(2006),一般來說,即使是一個較大的索引數據庫也在電腦上海量的數據總量面前不值一提。
索引數據目錄(xapiandb)裏只包含那些可以通過一次索引過程便完全重構的數據,因此隨時可以安全地刪除。
如果妳第一次安裝的Recoll 是1.9.0 版本或更新的版本,那麽妳可以無視這一小節。(無視)
Recoll 索引中不會保存被索引的文檔的復件。但是它保存咯足夠的數據,幾乎能夠原樣重構原文檔。如果要索引機密數據,那麽應當限制對數據庫目錄的訪問權限。
從1.4 版本開始,Recoll 會在創建配置文件目錄時使用 0700 權限模式(只允許擁有者訪問)。由于在默認情況下索引數據目錄是配置文件目錄的一個子目錄,所以能夠得到保護。
如果妳采用其它的配置情況,那麽妳應當考慮一下對妳的索引數據的保護,正確設置目錄和文件的訪問權限,另外在更新索引的時候可能還需要調整 權限掩碼 。
Recoll 配置文件中的變量控制著要索引文件系統中的哪些部分,以及一個個的文件分別是怎麽處理的。這些變量可通過手動編輯配置文伯或操作 recoll 圖形界面的對話框來設置。
妳還可以用多個單獨的配置目錄來定義多個索引,這種做法一般用來將私人索引與公用索引分開,或者利用對數據的組織來提升搜索的准確性。
第一次啟動recoll 時,會詢問妳是否要進行索引。如果妳想要在索引之前調整一下配置參數,那麽就在這個時候點擊Cancel,程序會顯示出配置界面。如果妳退出,那麽recoll 會創建一個~/.recoll目錄,其中包含空白的配置文件,妳可以手動編輯。
對配置文件的說明在本文檔的安裝章節,或者在recoll.conf(5) man 頁面,但是最新的說明信息應當是在示例配置文件的注釋中。妳馬上會感興趣的最有用的變量應當是topdirs,它決定的是哪些目錄樹會被索引。
在對純文本文件、HTML 或郵件以外的文件(也就是說:pdf、postscript...)進行索引的過程中所需要的程序是在外部軟件包小節中說明的。
針對某個指定的配置文件的大部分參數都可以在按照這個配置文件運行(或者是默認情況,或者是設置RECOLL_CONFDIR 或-c選項。)的recoll 圖形界面中設置。
這個界面是用菜 Preferences 單啟動的。它有兩個主要的面板。第一個面板用來設置全局變量,比如說頂級目錄的列表或者要跳過的路徑的列表。第二個面板用來設置那些針對子目錄的變量。第二個面板裏的自定義目錄列表默認是空的,妳可以自由添加。然後那些變量會針對當前選中的目錄(或者,如果選中的是空白行,則是針對頂級目錄)而設置。
這個界面上的大部分條目的意義都是很明顯的,而且還可以通過文本標簽上彈出的 工具提示 來看更詳細的說明。對于更詳細的細節,妳需要參考這個手冊中的配置小節。
配置工具一般會保留配置文件中的注釋和大部分格式,因此非常適合用在手動編輯的文件上,當然,妳最好還是備份一下...
可用兩種方式來執行索引:recollindex 程序,或recoll 程序中的索引線程(使用File 菜單)。兩個程序都會使用RECOLL_CONFDIR 變量或接受-c 配置文件目錄 選項來指定一個非默認的配置文件目錄。
選擇是要使用索引線程還是recollindex 命令的理由:
•.啟動索引線程更方便,只需要點擊一下鼠標。
•. recollindex 命令有更多選項,尤其是用來重置索引的選項(-z)。
•. recollindex 命令如果崩潰的話,不會影響到妳的圖形界面(很罕見的情況,但是誰能保証不會發生勒...)
•. recollindex 命令使用setpriority/nice 來降低自己在索引時的優先級(當ionice 普及時,它也會使用這個),線程無法做這一點,否則它也會使用戶界面變慢。
請讀者自行決定吧...
如果recoll 程序在啟動時沒有發現索引,那麽它會自動開始索引(除非被取消)。
recollindex 索引進程可通過發送一個中斷(^C, SIGINT)或終止(SIGTERM)信號來中斷。在進程退出之前可能會需要一些時間,因為它需要保存并關閉索引。索引線程也可從菜單中終止。
在這樣中斷之後,索引會有一定程度的損壞,因為那些通常在索引過程的最後時間做的操作會被跳過(比如,詞根和拼寫數據庫會不完整,或者過時)。妳只需要稍後重新啟動索引過程,便可以修復。索引會在中斷的位置繼續(整個文件樹會被遍歷,但是在中斷之前便已經索引過并且目前仍為最新狀態的那些文件不需重新索引)。
recollindex 還有一些其它的選項,在它的man 頁面說明。
妳可能會對-i和-f選項感興趣。-i 允許對一個明確給出(以命令行參數給出或從標准輸入讀取)的文件列表進行索引。-f 使得recollindex 無視配置文件中指定的文件選擇參數。將這兩個選項結合,就可以實現一個自定義的文件選擇過程,只處理文件系統中的某些區域:將頂級目錄添加到skippedPaths 列表中,再采用一個適當的文件選擇方法來構造文件列表,提供給recollindex -if。
recollindex -i 不會跟進到參數中的目錄裏面,只會將那些目錄添加到索引條目中。構造完整文件列表的事情是由外部的文件選擇方法來負責的。
通過recollindex -m 命令來實現實時的監視/索引。使用這個選項之後,recollindex 會脫離終端,成為一個守護進程,持久地監視文件的變化并且更新索引。
可在軟件包的配置階段使用--with[out]-fam或--with[out]-inotify選項來對實時索引功能進行配置。默認配置是在支持inotify 的系統上采用它。
可用rclmon.sh 腳本來方便地啟動及終止這個守護進程。它位于examples 目錄中(一般是/usr/local/[share/]recoll/examples)。
啟動守護進程的動作通常會放到用戶會話腳本中進行。比如,敝人的簡陋的基于xdm 的會話中有一個.xsession腳本,它的末尾是這樣寫的:
recollconf=$HOME/.recoll-home
recolldata=/usr/local/share/recoll
RECOLL_CONFDIR=$recollconf $recolldata/examples/rclmon.sh start
fvwm
首先啟動索引守護進程,然後是窗口管理器,會話會一直等待窗口管理器退出。
默認情況下,索引守護進程會監視X11 會話的狀態,當會話結束時也會跟著退出,不需要明確地殺死它。(可在執行recollindex 時帶上-x參數,以禁用對X11 服務器的監視).
在KDE 中,妳可以在$HOME/.kde/Autostart目录下放一个小的脚本来启动recollindex -m。当会话开始时,便会执行它。
在Gnome 中有一个类似的机制(在菜单中找到会话控制工具,再使用“自動啟動”標簽頁)。
默認情況下,索引守護進程輸出的消息會被無視。妳可以通過設置daemlogfilename 和daemloglevel 配置參數來改變這一點。而且,記錄文件只在守護進程啟動的時候才被截短。如果守護進程持續運行的話,記錄文件可能會變得非常大,當然這取決于記錄級別。
盡管實時索引是非常方便的,但是當某些文件發生改變時引起的重復索引可能會對系統造成較大的負擔,比如說郵件文件夾。另外,讓recoll自行監視一個巨大的文件樹也是很耗資源的。如果妳的系統的資源不足的話,那麽最好不要啟用它。大部分情況下,間斷式索引就夠咯。
當采用實時監視時,可能會發生這樣的事:某些文件需要索引,而它們又變動得太頻繁,以致于給系統造成過重的負擔。
Recoll 提供咯一個配置選項,它指定的是:在最短為多長的時間內,由一個通配符指定的文件不能被重新索引。參考配置小節中的mondelaypatterns 參數。
recoll 程序提供咯用來進行搜索的主要用戶界面。它是基于Qt 庫的。
recoll 有兩種搜索模式:
•.簡單搜索(默認方式,位于主屏幕),擁有一個輸入條目,其中可輸入多個詞語。
•.高端搜索(一個面板,通過Tools 菜單或工具條圖標來調出),擁有多個輸入條目,妳可用來構造一個邏輯條件,另外還可以過濾文件類型及文件位置。
大部分情況下,妳可以輸入妳想到的詞語,甚至可以在其中包含一些標點符號或非文本的字符。比如,Recoll 可以處理這些東西:郵件地址、從其它文本窗口復制過來的東西、標點。
那種妳需要將文字按照與平常打印時不同的方式來輸入的情形,主要是針對東亞語言的(中文)。在這種情況下,由多個字組成的詞語應當拆開,每兩個字之間用空格隔開(一般在打印時不會用空格隔開)。
1.啟動 recoll 程序。
2.自行決定是否要選擇一下搜索模式:Any term、All terms、File name或Query language。
3.在窗口頂部的文本輸入框中輸入搜索單詞。
4.點擊Search 按鈕,或者按 回車 鍵,以開始搜索。
初始的默認搜索模式是Query language。如果沒有特殊指令的話,這個模式會查找那些包含所有搜索詞語的文檔(含有的詞語越多,得分越高),就像All terms 模式一樣,不過那個模式會無視這些指令。Any term模式會查找那些至少包含其中一個詞語的文檔。
Query Language 的特性在一個單獨的小節中說明。
File name模式會專門查找文件名。輸入條目會按照空白字符分割,其中的每一段會被擴展,然後查找那些匹配所有小段的文件名(從1.15 版本之後是這樣的,以前的版本是按照OR 來匹配的,那種方式效果不好)。注意事項:
•.大小寫不第三,口音不敏感。
•.對于不包含任何通配符和大寫字符的小段,會在前後加上'*'(也就是說: etc -> *etc*,但Etc -> etc )。顯然,如果其中某個小段中有大寫字符(它會導致精確匹配),那麽使用多個小段是無意義的。
•.如果妳要搜索一個包含空白字符的模式,那麽加上雙引號(也就是說: "admin note*" )。
•.如果妳的索引很大(有很多文件),那麽過于普通的小段可能導致搜索效率低下。
•.示例, inst recoll 會匹配 recollinstall.in (以及其它的文件...)。
單獨弄個文件名搜索是有原因的,因為在其中一部分索引內容上進行通配符擴展是更有效率的(在詞語的左邊進行通配符匹配,而不至于明顯降低效率)。
所有的搜索模式都允許在詞語中使用通配符(*、?、[])。妳可能需要看看通配符小節。
妳可以將輸入內容放在雙引號裏,以表示要進行精確匹配(按照指定順序相鄰的詞語)。例如:"virtual reality"。
字母的大小寫不影響搜索結果,但是大寫字母可阻止程序進行詞根計算。也就是說:當妳搜索floor 時,一般也會搜索flooring、floored……。而當妳搜索Floor 時,只會搜索floor,但不限大小寫。詞根計算也可以在配置選項裏完全禁用。
Recoll 會記住妳前幾次所進行的搜索。妳可使用簡單搜索文本輸入框(一個組合框)來回味它們(點擊文本輸入條右邊的那個東西)。但是請注意,只會記錄搜索文字的內容,不會記錄模式(全部/任意/文件名)。
妳可將任意文字復制到All terms 或Any term 搜索框,包括標點、換行符和其它東西──通配符字符除外(單個的?字符還是可以的)。Recoll 會處理這些東西,給出一個正確的搜索結果。這是這個模式與 Query Language 模式最大的不同,在那種模式下,妳需要注意語法。
妳可使用Tools / Advanced search對話框來進行更復雜的搜索。
在搜索之後,會馬上有一個結果列表顯示在主列表窗口中。
默認情況下,文檔列表會按照相關性排序(系統認為與查詢的內容關聯性最大的會排在前面)。妳可使用工具條中的豎向箭頭來讓結果按照日期升序或降序排列(舊的排序工具已經在1.15 版本中去掉咯,因為新的結果表格有更強的能力)。
點擊一個條目中的Preview 鏈接,會為該文檔開啟一個內部預覽窗口。在該次搜索中,隨後再點擊Preview,則會在已有的預覽窗口中打開新的標簽頁。妳可以使用Shift+點擊 來強制打開一個新的預覽窗口,以便將文檔并排對比。(妳還可以在單個的預覽窗口中按Shift+上箭頭 / 下箭頭,以預覽後續的結果)。
點擊Open 鏈接的話,會嘗試著啟動一個外部程序來打開文檔。針對每種文件類型的關聯程序可通過用戶界面的配置對話框來配置,或者編輯mimeview 配置文件。妳還可以選中 Use desktop preferences 選項,以使用桌面的默認設置。當妳使用的是一個精心配置 的Gnome或KDE 桌面的時候,這應當是最好的選項咯。
Preview 和Open 鏈接并不一定會在所有條目中出現,當它們不出現時,意味著Recoll 還不知道如何預覽某種文件類型(只對文件名進行索引),或者不知道該用哪個外部程序來打開某種文件類型。這一點可通過 mimemap 和 mimeview 配置文件(後者可用用戶選項對話框來修改)來進行調整。
結果列表中的條目的格式可進行配置,通過選項對話框來編輯一個HTML片段就可以。
妳可以點擊結果頁面頂部的Query details 鏈接,以查看經過詞根擴展和其它處理之後執行的實際的查詢。
在結果列表或預覽窗口中雙擊任何詞語都會將它加到簡單搜索文字中。
結果列表是分頁的(每頁的條目個數可在配置中修改)。使用工具條中的箭頭或頁面底部的鏈接來翻頁。
除咯預覽和打開鏈接之外,妳還可以在結果列表中的任一段落上單擊右鍵來顯示一個彈出菜單。這個菜單有以下條目:
•.Preview
•.Open
•.Copy File Name
•.Copy Url
•.Save to File
•.Find similar
•.Preview Parent document
•.Open Parent document
Preview 和Open 條目所做的事與對應的鏈接相同。
Copy File Name 和 Copy Url 會將相關的數據復制到剪切板,以便稍後粘貼。
Save to File允許將一個結果文檔的內容保存到某個文件裏。這個條目只在當前文檔不是一個單獨文件,而是某個文件中的子文檔(也就是說:一個郵件附件)的情況下出現。這很有用,可在沒有對應編輯器的情況下提取附件。
Find similar條目會從當前文檔中選擇一些相關的詞語,將它們加入到簡單查詢輸入框。然後妳可以進行一次簡單查詢,這樣有機會找到與當前結果相關的文檔。
Parent document條目會針對那些本身并不是文件,而是一個更高級別的文件的一部分或是附件的文檔出現。這個條目主要是針對郵件附件的,允許查看當前文檔被附著于其上的那封郵件。注意,對于位于某個郵件文件夾文件中的郵件,這個條目也會出現,但是并不能打開那個文件夾(如果妳試著打開,將會出現一個錯誤對話框)。Recoll 還不夠智能,無法在這種情況下禁用這個條目。
從Recoll 1.15 開始,結果可按照一個表格形式來顯示。妳可以在工具條中點擊那個像表格一樣的圖標,來切換到這種呈現方式(這是一個開關式按鈕,再點擊一次就恢復列表形式)。
點擊某列的表頭可針對該列的值進行排序。妳可以再點擊一次,以使用反序,還可以通過表頭的右鍵菜單來重置排序規則為默認的按相關性排序(還可以使用按日期排序箭頭)。
列表和表格顯示的結果是一樣的。為表格設置的排序條件在妳切換回列表模式之後仍然有效。妳可以在一個日期排序箭頭上點擊再次以將它重置。
通過表頭的右鍵菜單可以增加或刪除列。那些列可以調整大小,它們的順序可以改變(拖放)。當妳退出recoll時,所有的改變都會被記錄。
將鼠標懸停在表格的某一行上時,會更新窗口底部的細節區域。妳可以點擊那一行來將下面顯示的東西固定。底部區域與一個經典的結果列表段落是等價的,其中帶有可以預覽及打開本地程序的鏈接,還有一個等價的右鍵菜單。按 Esc 鍵會將下面的顯示重新切換成變化狀態。
當妳第一次在結果列表中點擊一個Preview 鏈接時,會打開預覽窗口。
隨後在該搜索中再請求預覽時,會在已有的窗口中打開新標簽頁(除非妳在點擊時按住Shift 鍵,這樣會打開一個新窗口,以便進行比較)。
開始另一個搜索,并且要求預覽的話,會創建一個新的預覽窗口。舊的窗口會保持打開,除非妳關掉。
妳可以在預覽窗口中按^W (Ctrl + W)來關掉一個預覽標簽頁。關掉窗口的最後一個標簽頁時,窗口也會關閉。
當然,妳還可以通過窗口框架上由窗口管理器提供的按鈕來關掉預覽窗口。
妳可以在預覽標簽頁中按Shift+下或Shift+上 ( 下 和 上 是箭頭按鍵)來顯示結果列表中的下一個或上一個文檔。
預覽標簽頁有一個內部的增量搜索功能。妳可用以下方法來進行搜索:在文字區域按/(斜杠)或CTL-F,或點擊Search for:輸入條,再輸入搜索字符串。然後,妳可以使用Next 和Previous 按鈕來尋找下一個/上一個。妳還可以按F3 來定位到下一個。
如果妳輸入過搜索字符串,再用^Up/^Down來瀏覽結果的話,則後續的每個文檔中都會對搜索字符串進行搜索。如果字符串被找到,則光標會被定位到它首次出現的地方。
在文本區域單擊右鍵的話,可以將顯示的內容在主文字和相關的字段(也就是說:作者、摘要……)之間切換。這是特別有用的,有些時候匹配的字符串不是位于主文字中,而是位于相關字段中。
妳可按^P (Ctrl + P),以便打印當前預覽窗口中的內容。
高端搜索對話框幫助妳進行更復雜的搜索,而且還不用記語法。它可通過Tools 菜單或主工具條來開啟。
這個對話框有三個部分:
•.頂部允許通過組合多個不同類型的語句來構造一個查詢條件。每個條目都可以按照以下模式來配置:
•.All terms.
•.Any term.
•.None of the terms.
•.Phrase (在一個可調整的窗口內,精確的詞語,其順序固定)。
•.Proximity (在一個可調整的窗口內,任意順序的詞語)。
•.Filename search.
可點擊Add clause 按鈕來創建更多的條目。
在搜索時,取決于左邊的選項(All clauses或Any clause),那些非空白的條件會按照邏輯與或邏輯或來組合。
除"Phrase"和"Near"以外任何類型的條目都接受單個詞語的組合以及用雙引號引用的詞組。詞根和通配符會像簡單查詢中一樣地被擴展。
•.下一部分允許按照文件類型來過濾結果。
文件類型選項的狀態可被保存為默認值(文件類型過濾器不會在程序啟動時便激活,但其中的列表會被恢復)。
•.底部區域允許將搜索結果限制在索引區域中的一個子目錄樹中。妳可以使用Invert 復選框來使程序搜索那些不在這個子目錄樹中的文件。如果妳經常在文件系統中的大型子目錄樹上使用目錄過濾器的話,那麽妳可以考慮一下使用多個索引,那樣性能會好一些。
Phrases 和 Proximity 搜索 。這兩種模式非常相似,只有一點不同,proximity 搜索不會要求詞語按指定順序出現。在兩種模式下,在搜索詞語之間允許出現一定數量(模糊度)(使用左邊的計數器來調整其數量)的不匹配的詞語。對于 phrases ,默認數量是0(精確匹配)。對于 proximity ,其數量是 10 (意味著,如果兩個搜索詞語在一個由 12 個詞語組成的窗口中出現,則認定為匹配)。示例:以 phrase 模式搜索 quick fox ,模糊度為0,則會匹配quick fox ,不匹配quick brown fox。模糊度為1,則會匹配後者,但不匹配fox quick。以proximity 模式搜索quick fox,并且使用默認的模糊度,則會匹配後者,還會匹配 a fox is a cunning and quick animal。
在高端搜索對話框中點擊Start Search 按鈕,或者在任意一個文本框中按回車鍵,都能啟動搜索。主窗口中的按鈕啟動的一直是簡單搜索。
點擊結果頁面頂部的Show query details 鏈接來查看最終執行的查詢。
Recoll 自動處理單詞的時態變化等情況(也就是說:復數/單數、動詞形態)。但還存在一些情況,用戶是不知道要搜索的准確詞語的。比如,妳可能不記得某個詞語怎麽拼寫咯,或者只記得前面一部分。
詞語探索工具(從工具條圖標啟動或從Tools 菜單的Term explorer 條目啟動)可用來搜索整個索引詞語列表。它有三種模式:
Wildcard
在這種模式中,妳可以輸入一個終端風格(*、?、[])的通配符搜索字符串。也就是說: xapi* 將會顯示出所有以 xapi 開頭的索引詞語。 (更多說明在這裏)。
Regular expression
這種模式會接受正則表達式。示例: word[0-9]+ 。表達式是默認定位在開頭的。也就是說: press 會匹配 pression 但不會匹配 expression 。妳可以使用 .*press 來匹配後者, 但是要注意,這將導致對整個索引詞語列表進行掃描,那可能會很耗時間。
Stem expansion
這種模式下,會按照平常那樣對詞根進行擴展。所以可用來演示那個處理過程。
Spelling/Phonetic
在這種模式下,妳按照自己所想的樣子來拼寫詞語,Recoll 會盡力找到發音與妳所寫的單詞相近的索引詞語。這種模式會使用Aspell 這個拼寫檢查程序,所以要想正常進行的話就必須安裝這個(如果妳的文檔中包含咯非ascii 的字符,則Recoll 需要版本號高于0.60 的aspell,以對UTF-8 進行支持)。用來從索引詞語中構造字典(在索引過程的最後進行)的語言是由妳的本地語言支持環境定義的。當語言被混用時,可能會出現詭异的現象。
注意,某些情況下,Recoll 不知道要搜索的字符串是以什麽開頭的(也就是說,像 *coll 這樣的通配符),擴展過程會花費好長時間,因為要處理整個索引詞語列表。對于通配符和正則表達式,擴展過程被限制為200 個結果。
在結果列表中雙擊某個詞語就會將它插入到簡單搜索輸入框中。妳還可以在結果列表與任意輸入框之間復制/粘貼(換行符會被仔細處理的)。
可使用多個配置文件目錄來創建多個 Recoll 數據庫或索引,這通常是用來對文件系統的不同區域進行索引的。可使用RECOLL_CONFDIR 環境變量,或對recoll 和recollindex 使用-c選項,來選中一個特定的索引,對其進行更新或搜索。
一個recollindex 進程只能更新一個特定的索引。
一個recoll 進程同樣會與一個特定的索引關聯起來,那個索引會被它的索引線程更新,但它可以使用多個Recoll 索引來進行搜索。外部索引可通過配置對話框的external indexes 標簽頁來選擇。
索引的選擇是分兩步走的。首先要定義所有可用的索引,然後選擇要用來進行搜索的索引的子集。當然,這些參數是在程序每次執行時都會讀取的(它們是針對每個Recoll 配置單獨保存的)。所有索引的集合通常是固定不變的,但是活躍索引可能會經常被調整。
主索引(由RECOLL_CONFDIR定義)是永遠活躍的。如果妳不接受這一點,那麽請另外設置一個配置目錄,讓它索引一個空的目錄。
通過用戶界面來構造全部索引的集合可能會是相當冗長乏味的,所以妳可以使用RECOLL_EXTRA_DBS 環境變量來提供一個初始集合。這個東西一般會由系統管理員來設置,這樣就不用所有用戶親自設置咯。這個變量中的索引目錄之間應當用冒號隔開,也就是說:
export RECOLL_EXTRA_DBS=/某個/地方/xapiandb:/另/一個/db
多個索引的一個典型用法就是:系統管理員建立一個中央的索引,用來搜索共享數據,妳可以選擇是否將它與妳自己的數據一起搜索。當然,還有其它可能性。有很多情況,妳知道應當搜索哪一組文件,這樣能夠縮小搜索範圍,因此而提高搜索效率。妳可以在高端搜索中使用目錄過濾功能來實現幾乎相同的效果,但是多個索引的效率好得多,所以值得一搞。
妳實際查看(使用內部預覽窗口或外部工具)過的文檔會被記錄到文檔歷史中。
妳可以使用Tools/Doc History 菜單條目來顯示歷史列表。
妳可以使用File 菜單中的Erase document history 條目來刪除文檔歷史。
結果列表中的文檔通常是按照相關性排序的。
還可以在結果列表中隱藏重復條目(與顯示的那個文檔有著完全相同的內容的文檔)。相同性的檢測是基于對整個文檔的MD5 散列進行的,而不僅僅基于文字內容(所以,對于一個文本文檔,當妳給它加上一張圖片時,它便與原來的文檔不同咯)。對重復條目的隱藏是由Query configuration 對話框中的一個條目來控制的,默認是關閉的。
從結果或預覽文字中拾取新的詞語 。在結果列表或一個預覽窗口中雙擊一個詞語,會將它加入簡單搜索輸入框。
通配符 。通配符可在所有形式的搜索中出現在搜索詞語裏。 了解更多。
自動識別後綴 。像 odt 或 ods 這樣的詞語可以自動變成查詢語言中的 ext:xxx 語句。這可以在圖形界面的 Search preferences 面板中啟用。
禁用詞根擴展 。在任意一個搜索輸入框裏輸入帶大寫字母的詞語就會禁用詞根擴展(如果妳輸入 Garden ,而不是輸入 garden ,則不會搜索 gardening )。這是在Recoll 搜索中唯一一個會被字母大小寫影響的地方。妳還可以在配置中禁用詞根擴展或者改變詞根計算語言。
查找相關的文檔 。在結果列表的段落中點擊右鍵,再在菜單中選擇 Find similar documents 條目,就會從當前結果中選中一組“有趣的”詞語,將它們插入到簡單搜索輸入框裏。然後妳可以編輯列表,開始一個新的搜索,以找到那些可能與當前結果相似的文檔。
文件名 。在索引過程中,文件名也會被加入到索引中,妳可將它們當作普通詞語用于普通搜索輸入框中(Recoll 曾經將文件路徑中的所有目錄都當作詞語加到索引中。現在已經不這麽做咯,因為看起來沒效果)。另外,妳可使用專門的文件名搜索,它 只會 搜索文件名,它可能會比通用搜索要快一些,尤其是使用通配符的時候。
詞組和近似條件搜索 。可將詞組放在雙引號裏。例如: "user manual"只會搜索那種user 後面緊接著manual 的情況。妳可以在高端搜索對話框中使用 This phrase 字段來達到同樣的效果。詞組可在所有的簡單或高端搜索輸入框裏與簡單詞語一起輸入(除咯This exact phrase 之外)。
自動組成詞組 。這個選項可在配置對話框中設置。如果被啟用,則在搜索 Any terms 時,會自動構建詞組并且添加到簡單搜索中。這不會完全改變搜索結果,但是會為那些含有此詞組的結果賦予更高的 相關性。也就是說:搜索 virtual reality 時,所有包含 virtual 或 reality 或兩者都出現的文檔都會被命中,但是那些包含 virtual reality 的文檔會排在更前面。
使用字段 。妳可使用 查詢語言 和字段指令來搜索文檔的特定部分。這對于郵件非常有用,比如只搜索來自某個地址的郵件: search tips from:helpfulgui
查詢解釋 。妳可以看看對于查詢條件的准確描述,包括詞根擴展、邏輯操作,只需要點擊結果列表的頭部就可以咯。
在預覽窗口中瀏覽結果列表 。在預覽窗口中按Shift- 下 或Shift- 上 (Shift + 一個箭頭鍵 )會顯示結果列表中的下一個或上一個文檔。當前活躍的任何次要搜索都會在新文檔中執行。
用鍵盤滾動結果列表 。妳可使用PageUp 和PageDown 來滾動結果列表,用 Shift+Home 來返回第一頁。即使輸入焦點在搜索條件輸入框裏,也可以這樣。
強制打開一個預覽窗口 。妳可以在結果列表的 Preview 鏈接上按住Shift 再點擊,以強制打開一個預覽窗口,而不是在已有的預覽窗口中打開一個新標簽頁。
關閉預覽 。在標簽頁中按^W會關閉它(并且,關閉最後一個標簽頁時,會關閉整個窗口)。按Esc 會關閉預覽窗口和所有標簽頁。
打印預覽內容 。在預覽窗口中按^P會打印出當前顯示的文字。
退出 。幾乎在任何位置按^Q都會關掉程序。
妳可以使用Preferences 菜單中的Query configuration 條目來對搜索界面的某些方面進行自定義。
對話框中有好幾個標簽頁,分別處理的是:界面自身、用來進行搜索和返回結果的參數、要搜索哪些索引。
•.Number of results in a result page:
•.Hide duplicate results: 決定不同位置找到的同一個文檔是否要顯示。
•.Highlight color for query terms: 在結果列表和預覽窗口中,來自用戶的查詢條件的詞語會被高亮顯示。它的顏色就在這裏選擇。任何Qt 顏色字符串都應當可以用(比如red、#ff0000)。默認值是blue。
•.Result list font: 結果列表中會顯示好多信息,所以妳可能想要對字體/字體大小進行自定義。Recoll 中的其它字體由妳的全局Qt 選項(試試qtconfig 命令)決定。
•. Result paragraph format string: 允許妳改變每個結果列表條目的呈現方式。這一點有一個專門小節說明。
•. Abstract snippet separator: 那些從索引數據中合成的摘要通常是由從文檔的不同位置提取的片段組成的。這個選項定義的就是片段的分隔符,默認是一個省略號。
•.Maximum text size highlighted for preview :在將文字插入到預覽窗口中之前,先要在其中將搜索詞語變成高亮的,這牽涉到很多處理步驟,因此可針對超過這個尺寸的文字禁用這一功能,以加速載入。
•.Use desktop preferences to choose document editor: 如果這個被選中的話,則當妳在結果列表中點擊鏈接Open 時,會使用xdg-open 工具來打開文件,而不是使用mimeview 中定義的程序。xdg-open 又會使用妳桌面系統的設置來選擇一個適當的程序。
•.Choose editor applications :這個選項會允許妳針對特定的文件類型來選擇在點擊Open 鏈接時要啟動的命令。
•.Display category filter as toolbar... :可通過這個來選擇是否要將文檔類型選項顯示成一組按鈕。
•.Auto-start simple search on white space entry: 如果被選中,則每當妳在簡單搜索輸入框中輸入空格時,便會開始搜索。這使得妳能夠在輸入新詞的同時觀察結果列表。默認是關閉的,無論妳怎麽想...
•.Remember sort activation state :如果選中,則Recoll會記住排序條件。默認情況下不會啟用排序。
•.Prefer HTML to plain text for preview :如果選中,則Recoll 會在預覽窗口裏顯示HTML。如果這個東西引起Qt HTML 顯示功能的錯誤,則妳可以取消它,那麽就會顯示純文本。
•.Stemming language: 詞根計算顯然依賴于文檔的語言。這個列表框會讓妳在詞根數據庫中選擇,它們是在索引時構造的(在主配置文件中設置),或者是稍後使用recollindex -s 添加的(參考recollindex 手冊)。動態添加的詞根語言會在下次索引時刪除,除非它們也被添加到配置文件中咯。
•.Replace abstracts from documents: 這個東西控制的是,我們是否應當從文檔中合成一個摘要,而不是顯示文檔中自帶的摘要。
•.Dynamically build abstracts: 這個東西控制著Recoll 是否要在顯示結果列表的同時構造文檔摘要。在構造摘要的過程中,會從文檔中的搜索詞語附近提取上下文信息。對于較大的文檔,這樣做會明顯減慢結果列表的顯示速度,所以妳可以考慮關掉它。
•.Synthetic abstract size: 自行調整,品味一下吧...
•.Synthetic abstract context words: 在每個關鍵詞語周圍應當顯示多少個詞語。
•.Query language magic file name suffixes: 當進行query language 查詢時,這些詞語會自動變成ext:xxx 形式的文件名後綴語句(例如:doc xls xlsx...)。這會為那些經常使用文件類型搜索的人省掉一些時間。
External indexes: 這個面板允許妳瀏覽那些妳可能需要搜索的附加索引。外部索引是由它們的數據庫目錄(例如:/home/someothergui/.recoll/xapiandb、/usr/local/recollglobal/xapiandb)來定位的。
一旦輸入,那些索引就是出現在External indexes 列表中,然後妳可以在任何時候選中或不選中某些條目,以選擇妳要使用哪些索引。
妳的主数据库(当前配置文件对其进行索引的那个数据库)是一直活跃的。如果妳不希望這樣,則妳可以設置一個配置文件,使之對一個空的目錄進行索引。另外,對于一個替代的索引器來說,它需要實現一種從過期的數據裏刪除索引內容的機制。
可在Query configuration 的User Interface 標簽頁中設置結果列表段落格式,以便對結果列表中的每個結果的顯示情況進行自定義。
這是一個Qt HTML 字符串,其中帶有%的部分會按照下面的規則進行替換:
•. %A. 摘要
•. %D. 日期
•. %I. 圖標文件名
•. %K. 關鍵字(如果有的話)
•. %L. Preview和Edit鏈接
•. %M. 多媒體類型
•. %N. 結果編號
•. %R. 相關度
•. %S. 文件尺寸
•. %T. 標題
•. %U. 路徑
Preview 和Edit 鏈接的格式是<a href="P%N">和<a href="E%N">,其中 docnum (%N) 會被替換成當前文檔在結果列表中的編號。
除咯上面據說的預定義的值之外,所有像%(fieldname)這樣的字符串會被當前文檔中叫做fieldname 的字段的值替換。這裏只能包含儲存過的字段,那些只被索引卻不被儲存的字段在這個時候是無法訪問的(參考字段配置)。目前,除咯上面提到的值之外,默認只有極少的(只有author)字段會被儲存,所以,要利用這個特性的話,還需要自行在本地進行一些配置。比如,妳可以看看妳感興趣的文檔類型裏面都有哪些字段(在預覽窗口中點擊右鍵),再將妳感興趣的字段添加到要儲存的字段列表裏。比如說郵件過濾器所生成的recipient 字段。
段落格式字符串的默認值是:
<img src="%I" align="left">%R %S %L <b>%T</b><br>
%M %D <i>%U</i> %i<br>
%A %K
妳可以試試下面這個更有網頁感覺的格式:
<u><b><a href="P%N">%T</a></b></u><br>
%A<font color=#008000>%U - %S</font> - %L
或者試試簡潔模式:
<img src="%I" align="left">%L <font color="#900000">%R</font>
<b>%T</b><br>%S
<font color="#808080"><i>%U</i></font>
<table bgcolor="#e0e0e0">
<tr><td><div>%A</div></td></tr>
</table>%K
注意,上面段落中的P%N 鏈接會將標題變成一個預覽鏈接。
還可以定義摘要小節中的片段分隔符的值。
有多種方法可在不啟動圖形界面的情況下以文本流的方式獲取搜索結果:
•.帶-t參數運行recoll 程序。
•.運行recollq 程序。
要執行的查詢語句是以命令行參數的方式傳遞的。
默認情況下不會編譯recollq。妳可使用query 目錄中的Makefile 來編譯它。這是一個非常簡單的程序,如果妳會寫c++程序的話,那麽妳可以利用它來將輸出格式變成妳想要的。
recollq有一個手冊頁(默認情況下不會安裝,請到doc/man目錄中去找)。用法:
recollq [-o|-a|-f] <查詢字符串>
運行一個recoll 查詢,并顯示結果。
默認: 會將參數解釋成一個查詢語言字符串
-o 模仿圖形界面中簡單查詢的ANY TERM 模式
-a 模仿圖形界面中簡單查詢的ALL TERMS模式
-f 模仿圖形界面中簡單查詢的filename模式
通用選項:
-c <配置目錄> : 指定 一個配置目錄,將會替代 $RECOLL_CONFDIR
-d 同時輸出文件內容
-n <個數> 限制結果的個數(0->無限制,默認為2000)
-b : 基本內容。僅輸出路徑,不輸出文件類型及標題
-m : 輸出文檔的整個meta[]數組
-S 字段 : 按指定字段排序
-D : 反向排序
示例:
recollq 'ilur -nautique mime:text/html'
Recoll query: ((((ilur:(wqf=11) OR ilurs) AND_NOT (nautique:(wqf=11)
OR nautiques OR nautiqu OR nautiquement)) FILTER Ttext/html))
4 results
text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/comptes.html] [comptes.html] 18593 bytes
text/html [file:///Users/uncrypted-dockes/projets/nautique/webnautique/articles/ilur1/index.html] [Constructio...
text/html [file:///Users/uncrypted-dockes/projets/pagepers/index.html] [psxtcl/writemime/recoll]...
text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/factEtCie/recu-chasse-maree....
在圖形界面中,當把搜索模式設置成Query Language 時,簡單查詢輸入框中的查詢語言處理器會被激活。概括來說,它與圖形界面中的高端搜索界面擁有相同的功能。
這個語言主要是基于Xesam用戶搜索語言規範的。
如果妳覺得用查詢語言搜索到的結果不對,并且想知道實際搜索的是什麽的話,那麽,妳可以在圖形界面中點擊結果列表頂端的show query 鏈接,那樣就能夠看到最終被Xapian 執行的查詢是什麽咯。
我們要解釋一下一個簡單的請求示例:
author:"john doe" Beatles OR Lennon Live OR Unplugged -potatoes
這個語句將會查詢滿足以下條件的文檔: John Doe 以詞組的方式出現在author 字段中(這個字段的意思取決于文檔類型,例如:對于郵件就對應于From: 郵件頭),并且,(在文檔的任意部分)包含 beatles 或 lennon ,同時包含 live 或 unplugged ,不包含 potatoes 。
一個元素是由一個可選的字段標識和一個值組成的,兩者之間用冒號隔開。示例: Beatles , author:balzac , dc:title:grandet
如果有冒號,則它的意思是“包含”。Xesam中還定義咯其它關系,不過目前我們不支持。
搜索輸入框中的所有元素在默認情況下都會以邏輯與來組合。可以指定讓元素按照邏輯或來組合,例如 Beatles OR Lennon 。OR 必須原樣輸入(包括大小寫),它比 AND 的優先級要高: word1 word2 OR word3 表示 word1 AND ( word2 OR word3 ) ,而不是( word1 AND word2 ) OR word3 。不要輸入括號,目前不支持這種用法。
前面帶有-的元素表示這個詞語不應當出現。禁止使用僅僅只有否定元素的查詢語句。
照慣例,引號中的詞語表示一個詞組(詞語之間的順序也是固定的),所以 title:"prejudice pride"與title:prejudice title:pride 是不同的,它更難找到結果。
大部分Xesam 詞組修飾語是不被支持的,例外情況是:l (小寫的L),用來禁止詞根擴展;p,用來將詞組變成 近似 (無序的proximity)搜索。示例: "prejudice pride"p
Recoll 目前會處理以下默認字段:
•. title、subject或caption,三者是同義詞,表示搜索文檔標題或主題中的數據。
•. author或from,搜索文檔的作者。
•. recipient或to,搜索文檔的接收者。
•. keyword,搜索文檔中的關鍵詞(幾乎沒有文檔有關鍵詞的)。
•. filename,搜索文檔的文件名。
•. ext,指定文件名的後綴(例:ext:html)
字段語法還支持一些類似于字段的特殊條件:
•. dir,根據文件位置過濾結果(例:dir:/home/me/somedir)。-dir還支持搜索不在某個目錄中的結果,這一功能從1.15.8 版本開始可用。
•. date,按日期搜索或過濾。語法是基于ISO8601 標准的。目前只支持日期,不支持時間。通用語法是由/隔開的2 個元素。每個元素可以是一個日期或是一個時間段。時間段是用 P n Y n M n D 來表示的。其中的數字 n 分別是對應的年數、月數或天數,任一個都可以省略。日期是用 YYYY - MM - DD 來表示的。其中的天數和月份可以被省略。如果帶有/卻省略咯其中一個元素,則省略的元素會被解釋成索引中最早或最晚的日期。示例:
•. 2001-03-01/2002-05-01 日期範圍的基本語法。
•. 2001-03-01/P1Y2M 與上一個相同,但以時間段來表示。
•. 2001/ 從2001 年開始,直到索引中的最後一天。
•. 2001 整個2001年
•. P2D/ 表示的是,如果沒有日期為未來的文檔,則是2 天前直到現在。
•. /2003 ,2003 年及以前的全部文檔。
時間段還可以用小寫字母表示(比如:p2y)。
•. mime 或 format,指定文件類型。這個條件比較特殊,因為妳可以指定多個值,它們會按照 邏輯或 來組合(此語言的默認情況是 邏輯與 )。比如:mime:text/plain mime:text/html。不支持在mime 條件之前顯式指定一個邏輯操作符,那會導致產生怪异的結果。妳可以用否定符(-mime:some/type)來過濾掉某個類型,還可以在值中使用通配符(mime:text/*)。注意,mime 是唯一的默認按照邏輯或來組合的字段。比如,對于ext,妳就要明確使用OR。
•. type或rclcat,指定類型(text/media/presentation/……)。文件類型的分類是在 Recoll 配置(mimeconf)中定義的,可以修改或擴充。默認分類是主圖形用戶界面中用來過濾結果的那些。分類是與文件類型一樣按照 邏輯或 組合的。不能使用-來否定。
詞組的詞語和帶有大寫字母的詞語不會進行詞根擴展。詞語的任何位置都可以使用通配符。在詞語的左邊使用通配符可能導致搜索變得很慢(甚至,如果因為尺寸太大而導致擴展後的詞語被截斷的話,則會產生錯誤的結果)。參考通配符更多細節。
在索引時使用的文檔過濾器可能會創建其它的字段名,對此可以在配置中定義別名,所以,如果有人能夠仔細進行配置的話,則字段搜索的體驗將會是完全不同的。
當某些字符出現在詞組的雙引號後面時,會被識別成搜索修飾詞,其形式是 "某個詞語"修飾詞 。當然,實際的“詞組”可以是一個單個的詞語。支持的修飾詞:
•. l,關閉詞根擴展(主要對p 有意義,因為在默認情況下詞組的詞根擴展是關閉的)。
•. o,在詞組和近似搜索中指定“空缺”:指定的詞語之間可以出現的額外詞語的個數。如果o後面跟的是一個整數,則它就是空缺值,否則默認值是10。
•. p,將默認的詞組搜索變成近似搜索(無序)。示例:"order any in"p
•.可為查詢元素指定權重,在修飾詞的開始處指定一個十進制數就可以咯。示例:"Important"2.5。
搜索字符串中的某些特殊字符會被Recoll 解釋成特定的意思,用來擴展或限制搜索條件。通配符會以可控的方式來擴展詞語。定位字符可用來限制搜索條件,僅當匹配的詞語是在文檔的開關或開關附近或在某個字段中時才繼續搜索。
在Recoll 搜索輸入框中輸入的所有詞語都會在最終執行請求之前按照通配符擴展。
通配符字符包括:
•. * 匹配0 個或更多字符。
•. ? 匹配單個字符。
•. [] 可定義要匹配的字符的集合(例如:[ abc ] 匹配單個的字符,可能是'a'或'b'或'c',[ 0-9 ]匹配任意數字)。
在使用通配符之前,先要了解一些東西。
•.在詞語的開頭使用通配符可能導致搜索變慢,因為Recoll 需要掃描整個索引詞語列表。
•.在詞語的末尾使用*會產生比妳想的還要多的結果,并且還會比較怪异。妳可以使用term explorer工具來檢查一下對于某個指定的詞語會有哪些補全結果。妳還可以點擊結果列表頂部的鏈接來查看一下最終進行的搜索是什麽樣的。一般來說,對于自然語言的詞語,詞根擴展所得到的結果比末尾的*要好(當詞語中有通配符時,詞根擴展會被關閉)。
有兩個字符用來指定搜索過程中應當在文字的開頭還是末尾匹配。在一個詞語或詞組開頭的^表示要在開頭處進行搜索,在末尾的$表示要在末尾處進行搜索。
由于這個功能是以詞組搜索的形式來實現的,所以可以為匹配情況指定一個最大距離,這一點可通過高端搜索面板的控件來設置,或者通過查詢語言來設置。比如,下面這一個:
"^someterm"o10
會強制在距文字開頭的10 個詞語中搜索someterm。這一點可與字段搜索組合,例如somefield:"^someterm"o10 或somefield:someterm$。
這個特性還可以與真正的詞組搜索組合起來,但是,在那種情況下,距離會對詞組和定位符同時起作用,所以勒,在文字開頭處出現的bla bla my unexpected term 會被"^my term"o5匹配。
Recoll 使用外部程序來對某些類型的文件進行索引。對于妳想要索引的文件類型,需要安裝對應的程序(這些都是運行時的依賴項。在編譯Recoll 時不需要這些東西。除非要對相應的文件類型進行索引,否則在運行時也不需要這些東西)。
在進行一遍索引之後,可通過recoll File 菜單來查看還缺少哪些命令。這個列表儲存在配置文件目錄的missing 文件裏。
以下是需要外部命令的文件類型的列表。很多過濾器都需要iconv 命令,這個東西不一定會被列成依賴項。
注意,因為這條信息是相對動態的,所以最新版本的列表是在Recoll輔助程序頁面,還包括它們的主頁的鏈接、最佳源代碼/補丁頁面的鏈接和附加提示。下面的列表更新得并不頻繁,因此可能會過時。
對于很多Linux 發行版來說,其中的大部分命令都可以通過軟件包倉庫來安裝。然而,它們的軟件包可能會過時,或者并不是Recoll 要求的最佳版本,所以,如果某種文件類型對妳很重要的話,妳應當看看Recoll輔助程序頁面。
從Recoll 1.14 版本開始,很多原來由專用的過濾器處理的基于XML 的文件格式變成用 xsltproc 命令來處理咯,這個命令來自于libxslt。這些格式包括:abiword、fb2 (ebooks)、kword、openoffice、svg。
以下是列表:
•.Openoffice文件需要unzip 和xsltproc。
•.PDF文件需要pdftotext,它是Xpdf 或Poppler 軟件包的一部分。
•.Postscript文件需要pstotext。原來的版本中有個問題,處理文件名中的終端字符時會出錯,最近的版本已經修復。參考Recoll輔助程序頁面以了解更多細節。
•.Wordperfect文件需要wpd2html,來自于libwpd 軟件包。
•.TeX文件需要untex 或detex。如果妳的發行版中沒有對應的軟件包,則查看Recoll輔助程序頁面以找到源代碼。
•.dvi文件需要dvips。
•.聲音文件:Recoll 1.13 之前的版本使用id3lib 軟件包中的id3info 命令來提取mp3 標簽信息,用metaflac(標准flac 工具)來處理flac 文件,用ogginfo(vorbis 工具)來處理ogg 文件。1.14 及以後的版本使用一個基于mutagen 的Python 過濾器來處理所有聲音文件類型。
•.圖片:Recoll 使用Exiftool Perl 軟件包來提取標簽信息。大部分圖片文件格式都被支持。注意,對技術性標簽(圖片尺寸、光圈大小……)進行索引可能不會引起妳多大的興趣。僅在妳朝圖片文件裏保存個人標簽或文字描述時才有意義。
•.Zip壓縮包需要Python(以及標准的zipfile 模塊)。
•.Midi卡拉OK文件需要Python 和 Midi模塊
文本文件、HTML、郵件文件夾和 Scribus 文件是內部處理的。Lyx 用來對 Lyx 文件進行索引。很多過濾器需要iconv 及標准的sed 和awk 工具。
C++編譯器。
Xapian core 的開發文件。
重要: 如果妳是在一個較舊(Pentium 4 或Athlon 64 之前)的處理器上編譯Xapian 的話,則需要向configure 命令添加--disable-sse標志。否則所有的Xapian 程序會報告illegal instruction 錯誤之後崩潰。
Qt 的開發文件。
X11 和zlib 的開發文件。
大部分情況下,在妳的系統中能夠找到一個Qt 的二進制包。妳可能需要編譯Xapian,但這并不難。
妳可能還需要libiconv。Recoll 目前使用版本1.9(這個應當不嚴格)。在Linux 系統中,iconv 接口是 libc 的一部分,所以妳應當不需要做什麽。
Recoll 已經在Linux、FreeBSD 和Solaris 上編譯過,2005 年之後的大部分版本都可以,某些更舊的版本也可以(Solaris 8就可以 )。如果妳在其它系統上編譯,并且需要修改代碼的話,那麽我非常歡迎妳提供補丁。
配置選項:
•. --without-aspell 禁用對搜索詞語的發音進行匹配的代碼。
•. --with-fam 或 --with-inotify 會啟用實時索引代碼。在最近的Linux 系統中,Inotify 支持是默認啟用的。
•. --enable-xattr 啟用那些用來從文件的擴展屬性中提取數據的代碼。只有在某些程序在那裏儲存數據的時候才有用,而且還需要一個簡單的配置(參考 fields 配置文件中的注釋)。
•. --enable-camelcase 會啟用對 駱駝命名法 的詞語的分割。默認情況下是不啟用的,因為它有副作用,會令某些詞組搜索過程出現混亂:比如,"MySQL manual" 會被"MySQL manual"和"my sql manual"匹配,但不被"mysql manual"匹配(僅限于詞組搜索)。
•. --with-file-command 指定要使用哪個'file'命令(例如:--with-file-command=/usr/local/bin/file)。可用來在那些自帶的版本不好用的系統中使用gnu 版本。
•. --without-gui 禁用Qt 界面和X11 相關代碼,編譯命令行版本。
•.當然,常規的autoconf configure 選項也是可用的,例如--prefix。
正常過程:
cd recoll-xxx
configure
make
(疯狂调用编译器进行编译)
這裏面沒有自動配置過程。configure 腳本主要是將mk 目錄中的一個特定系統的文件鏈接為mk/sysconf。如果妳的系統不在其中,那麽它會告訴妳這一點,然後妳可能就需要手動復制和修改其中的一個文件咯(目標文件名應當與uname -s 的輸出一致)。
在源代碼樹的頂級目錄中執行make install 或recollinstall 前綴 。這樣將會把命令復制到 前綴 /bin,將示例配置文件、腳本和其它共享數據復制到 前綴 /share/recoll。
如果傳遞給recollinstall 的安裝前綴與系統默認值和執行configure 時指定的值(configure --prefix /某個/路徑)都不同,那麽,妳需要設置RECOLL_DATADIR 環境變量,以指明要將共享數據儲存在哪裏(例如,針對(ba)sh: export RECOLL_DATADIR=/some/path/share/recoll)。
然後妳可以去配置。
Recoll 的索引選項是在一個配置文件目錄中的文本配置文件裏設置的。可以有多個這樣的配置文件目錄,每個都對應著一個索引。
配置文件可手動編輯,也可通過Indexing configuration 對話框(Preferences菜單)來編輯。圖形界面的工具會盡可能地保留妳的格式和注釋,所以妳可以同時使用兩種方式來編輯。
配置參數的最准確文檔位于默認文件的注釋中,所以在這裏我們只給出一個概述。
對于這個索引,都有兩組配置文件。系統級的配置文件是在一個像這/usr/[local/]share/recoll/examples樣的目錄中,它們定義默認值,由所有索引共享。對于每個索引,都有一組同樣的文件,它們會包含那些自定義的參數。
配置文件的默認位置是妳的家目錄中的.recoll目錄。大部分人都會使用這個目錄。
這個位置可以修改,或者還可以添加其它位置,只需使用RECOLL_CONFDIR 環境變量,或者對recoll 和recollindex 使用-c參數。
如果在recoll 或recollindex 啟動時.recoll目錄不存在,則它會被自動創建,其中會有一組空白的配置文件。recoll 會在開始索引之前給妳一個機會來編輯配置文件。recollindex 會立即開始索引。為咯避免錯誤,只會在針對默認位置時才自動創建目錄,而當妳使用-c或RECOLL_CONFDIR 時不會創建目錄(那種情況下,妳需要自己創建對應的目錄)。
所有的配置文件的格式都是一樣的。例如,主配置文件大致是這樣的:
# 要索引的目錄列表,用空格隔開。
topdirs = ~/docs /usr/share/doc
[~/某個含有utf8編碼的文本文件的目錄]
defaultcharset = utf-8
有三種文本行:
•.注釋(以#開頭)或空白行。
•.參數修改(名字 = 值)。
•.小節定義([某個目錄名])。
取決于配置文件的類型,小節定義會有兩種不同的作用:分隔不同組別的參數,或者針對某個子目錄樹重新定義某些參數。直到下個小節定義出現,或者是達到文件末尾,它們都會保持有效。某些索引參數會從當前目錄位置開始向上查找。并不是所有的參數都能被重定義,這一點在下一小節中有說明。
當波浪號(~)出現在文件路徑的開頭時,會被解釋成用戶的家目錄,這一點與終端的行為一致。
在列表中使用空格來分隔。列表中本身包含有空格的元素可使用雙引號引用起來。
recoll.conf 是主配置文件。它定義的是:要索引什麽(頂級目錄及要略過的文件),以及對于未指明字符集的文檔類型要使用的默認字符集。
默認的配置情況會對妳的家目錄進行索引。
以下參數中的大部分都可以在recoll 界面的Index Configuration 菜單中修改。某些參數只能通過編輯配置文件來修改。
指定要索引的目錄或文件(針對目錄是遞歸的)。可以使用符號鏈接。參考followLinks 參數,以了解對于頂級目錄以下的符號鏈接進行跟蹤的設置(默認情況不跟蹤)。
skippedNames
要略過的文件或目錄的名字的模式列表,用空格分隔。默認文件中定義的列表是:
skippedNames = #* bin CVS Cache cache* caughtspam tmp .thumbnails .svn \
*~ .beagle .git .hg .bzr loop.ps .xsession-errors \
.recoll* xapiandb recollrc recoll.conf
這個列表可針對索引區域中的任意子目錄進行重定義。
頂級目錄不會受這個列表的影響(意思是說,topdirs 中的目錄即使與這個列表中的元素匹配,仍然會被索引)。
默認配置文件中的列表不會排除隱藏目錄(以點開頭的目錄名),這就意味著它可能會索引一些妳不感興趣的東西。另一方面,某些郵件客戶端,例如thunderbird,通常會將郵件保存在隱藏目錄裏,這又可能是妳想要索引的東西。一種解決方案就是將.*放到skippedNames 中,再將~/.thunderbird或~/.evolution放到topdirs 中。
不僅僅可以根據文件名來確定哪些文件不被索引。參考mimemap 中的recoll_noindex 變量,以了解另外一種排除文件的方式。
skippedPaths 和daemSkippedPaths
應當排除的文件或目錄的路徑的模式,以空格隔開。示例配置文件裏沒有默認值,但是程序的代碼會讀取那裏寫的內容。
skippedPaths 被用于批量和實時索引模式。daemSkippedPaths 可用來指定那些在初始化過程中進行索引,而不對其進行監視的文件。
示例,在某個目錄中略過文本文件:
skippedPaths = ~/某個目錄/∗.txt
在索引程序遍歷文件樹時,是否要跟蹤符號鏈接。默認值是無視符號鏈接,以避免對鏈接的目標文件進行重復索引。當這個選項被設為真時,也不會去避免重復。可在小節中為topdirs 裏的每個成員單獨設置這個選項。不可在topdirs 級別以下對其進行改變。
indexedmimetypes
Recoll 一般情況下會對它知道該如何解析的任意文件進行索引。這個列表允許妳將要索引的文件類型限制指定的範圍中。如果這個變量沒有定義,或者這個列表是空的(默認情況),則所有被支持的文件類型都會被處理。
compressedfilemaxkbs
壓縮文件(.gz或.bz2)的尺寸限制。這些文件需要先解壓到一個臨時目錄中,以便進行檢測,如果存在‘不感興趣’的巨型壓縮文件,則這是非常浪費的。負數則表示無限制,0則表示不要處理任何壓縮文件。默認值是-1。
textfilemaxmbs
文本文件的最大尺寸。巨型文本文件通常是枯燥的記錄文件。設置成-1以便禁用(默認20MB)。
textfilepagekbs
如果設置成-1以外的值,則文本文件會被索引成多個文檔,每個都是指定的尺寸。如果妳想對巨型文本文件進行索引的話,這個選項可能會有用,它既能減少內存占用,也能加快預覽窗口的載入。合理的值是幾兆(默認: 1MB)。
indexallfilenames
Recoll 將文件名的索引保存在數據庫中的一個特殊區域,以支持通過通配符進行的文件名搜索。這個參數確定的是:只對那些支持全文索引的文件類型進行文件名索引,還是對所有文件都進行文件名索引而無視文件類型。
usesystemfilecommand
控制的是,我們是否將file -i 系統命令用作確定一個文件的文件類型的最終步驟(主要步驟是使用mimemap 文件中定義的後綴關聯)。這對于那些沒有後綴名的文件很有用,但是會導致對很多假的“文本”文件進行索引。
dbdir
Xapian 數據目錄的名字。當索引被初始化時,它會在必要的時候被創建。如果不是絕對路徑,則會相對于配置文件目錄進行解釋。這個值可包含空格,但開頭和末尾的空格會被去掉。此處不可使用引號。
maxfsoccuppc
在停止進行索引之前允許出現的最大磁盤空間占用率。這個值是一個百分比,對應于df 輸出的“已用”列中的值。默認值是0,表示不檢查。
mboxcachedir
用來儲存郵箱文件夾消息偏移緩存文件的目錄。通常是$RECOLL_CONFDIR/mboxcache,但是可以在多個配置之間共享同一個目錄。
mboxcacheminmbs
對其偏移進行緩存的郵箱文件夾文件的最小尺寸。針對小文件進行偏移量緩存是沒有意義的。默認是5 MB。
idxflushmb
導致我們將內存中的數據刷新到硬盤上的索引裏去的閾值(新文本數據的兆數)。設置這個值可用來控制內存使用率。如果其值為0,則表示不進行顯式的刷新,而讓Xapian 使用自身的默認配置,也就是每隔10000(或XAPIAN_FLUSH_THRESHOLD) 個文件刷新一次,這就對內存占用率的控制沒有多大作用,因為內存占用率將會取決于文檔的平均尺寸。默認值是10。
loglevel,daemloglevel
recoll 和recollindex 的輸出詳細級別。值為4 時,會輸出大量調試/提示消息。2只會輸出報錯消息。帶daem的參數只影響到索引監視守護進程。
logfilename, daemlogfilename
輸出的消息應當保存到哪裏。'stderr'可用作一個特殊值,而且也是默認值。帶daem的參數只影響到索引監視守護進程。
mondelaypatterns
這個參數允許指定一些包含通配符的路徑模式(使用fnmatch(3)處理,不帶標志),以匹配那些變動得太快的文件,在重新對那些文件進行索引之前要延遲一段時間。這個列表是用空格分隔的,每個條目由一個模式和一個秒數組成,中間用冒號隔開。如果某個路徑條目包含空格,那麽可以使用雙引號。示例:
mondelaypatterns = *.log:20 "這 個 有 空格*:10"
monixinterval
處理索引隊列時的最小時間間隔(秒)。實時監視進程不會在每個事件到來時便立即處理,而是會等待這麽長時間,讓隊列產生累積,以減小開銷,并且將針對同一個文件的多個事件聚合起來。默認為30 秒。
monauxinterval
實時監視器在必要的情況下重新生成輔助數據庫(拼寫、詞根)的時間間隔(秒)。默認是一小時。
filtermaxseconds
過濾器的最大執行時間,超時之後會被取消。某些postscript 程序會陷入循環之中...
filtersdir
在這個目錄裏放的是一些外部過濾器腳本,它們是用來對某些文件類型進行索引的。它的值不應當修改,除非妳想修改其中的默認腳本。可針對任意的子目錄進行重定義。
iconsdir
用來儲存recoll 結果列表圖標的目錄名。如果妳想使用不同的圖片,則修改這個。
idxabsmlen
Recoll 在數據庫中為每個被索引的文件儲存一個摘要。這段文字可來自文檔中實際的‘摘要’小節,也可能只是文檔的開頭部分。它被儲存在索引中,這樣在顯示結果列表時便不用對原文件進行解析。idxabsmlen 參數定義的是儲存的摘要的尺寸。默認值是250 字節。搜索界面提供咯一個選項,讓妳選擇是要顯示這個儲存的文本還是顯示用搜索詞語周圍的文本合成的摘要。如果妳只准備看合成的摘要的話,則可以減少這個值,以節約一些硬盤空間。
noaspell
如果設置咯這個參數,則不會生成aspell 字典。在以下情況有用:妳不需要這個功能;或者這個功能無效,例如aspell 在生成字典的時候崩潰。
mimemap 指定的是文件擴展名與文件類型之間的映射。
對于沒有擴展名或者其擴展名不常見的文件名,會執行系統的file -i 命令來確定其文件類型(可在主配置文件中關閉這個功能)。
映射可按照單個的子目錄樹來指定,這在某些情況下是很有用的。比如:gaim 記錄文件的擴展名是.txt,但是應當特別對待,而這些文件通常是位于同一個地方。
mimemap 也有一個recoll_noindex 變量,它是一個後綴名列表。匹配這個列表的文件會被跳過(避免不必要的解壓縮或者執行 file)。這個變量與主配置文件中的skippedNames 有一定的重復,只有幾點不同:它不會對目錄起作用,它不會寫成依賴于文件系統位置的(它只是一個配置集合級別的參數),文件名仍然會被索引(skippedNames 中那些模式對應的文件名不會被索引)。recoll_noindex 主要被用來對付那些對于某個指定Recoll 版本不可索引的文件。這個參數是為咯避免錯誤地使用那些更加面向用戶的、本地自定義的skippedName。
HxLauncher: Launch Android applications by voice commands