Sun ONE logo     上一章     目錄     索引     說明文件首頁     下一章    
Sun ONE Directory Server 管理指南



第 10 章   管理索引

Directory Server的索引就像書本的索引頁一樣,藉由把要搜尋的字串跟目錄內容的參考產生關聯,可以加快搜尋的速度。索引是屬性值的表格,儲存在單獨的資料庫檔案內。目錄中每個尾碼的索引建立與管理彼此獨立。一旦在尾碼組態中建立索引後,伺服器就會自動維護索引。

如需索引的簡介、索引的成本與效益、nsslapd-allidsthreshold 屬性的說明以及提高 Directory Server 效能的方法,請參閱《Sun ONE Directory Server 安裝和調整指南》中的第 7 章<調整索引編製>

本章包含下列節:

編製索引概論

每個尾碼的索引分別儲存在對應的資料庫目錄檔案內。每個索引檔案包含在尾碼中為指定屬性定義的所有索引。例如,為一般名稱 (cn) 屬性維護的所有索引儲存在 databaseName_cn.db3 檔中。

當您初始化尾碼或使用本章所述的指令時,就會建立索引檔案。在用戶端搜尋作業與內部作業期間,伺服器會存取索引,以更快速地找到目錄中的項目。修改作業期間,目錄必須藉由更新索引檔案來更新目錄內容及維護索引。

Directory Server 支援下列索引類型:

  • 存在索引 (pres) - 包含一個項目的清單,這些項目含有特殊的屬性,而不論其值為何。
  • 相等索引 (eq) - 可讓您更有效率地搜尋包含特定屬性值的項目。
  • 近似索引 (approx) - 提供 利用 ~= 篩選運算元的有效「發音近似」搜尋。例如,對於搜尋部份名稱或拼錯的名稱而言,近似索引是很有幫助的。Directory Server 使用各種 metaphone 語音演算法,在近似索引上執行搜尋。


  • 注意

    Directory Server 5.2 的 metaphone 語音演算法只支援 US-ASCII 字母。因此,只能利用英文值使用近似編製索引。



  • 子字串索引 (sub) - 提供如 cn=*john* 之屬性值子字串的有效搜尋。由於每一個值有許多可能的子字串,因而這是成本高昂的索引維護方式。
  • 子字串索引會限制各項目至少要有兩個字元。

  • 對應規則索引 - 在當地語系化對應規則 (也稱為定序排序) 的 OID 與要編製索引的屬性之間建立關聯,以加速在國際目錄中的搜尋。
  • 瀏覽索引 - 改善以虛擬清單檢視 (virtual list view, VLV) 控制執行之搜尋回應時間。您可以在樹狀目錄中的任何分支點上建立瀏覽索引,以改善大幅擴展之樹狀子目錄的顯示效能,例如 ou=People,dc=example,dc=com

系統索引

系統索引是不得刪除或修改的索引。Directory Server 需要有這些索引才能正確有效率地運作。下表列出每個尾碼中自動建立的系統索引:

表 10-1    每個尾碼中的系統索引 

屬性

相等索引

存在索引

目的

aci

X

讓目錄伺服器能夠快速取得目錄中維護的存取控制資訊。

entrydn

X

加快根據 DN 搜尋的項目擷取速度。

nsUniqueId

X

用於搜尋特定項目。

nscpEntryDN

X

供 Directory Server 內部的複寫功能使用。

nsds5ReplConflict

X

X

用於協助找出複寫衝突。

numsubordinates

X

供 Directory Server 主控台 用於增強 [目錄] 標籤上的顯示效能。

objectClass

X

用來協助在目錄中加速樹狀子目錄的搜尋。

parentID

X

提高單層搜尋期間的目錄效能。

預設索引

當您在目錄中建立新尾碼時,伺服器會在對應的資料庫目錄中設定一組預設索引。您可以依編製索引的需要修改預設索引,但在取消設定索引之前,應該確定沒有任何伺服器外掛程式或您公司的其他伺服器會需要依靠該索引的屬性。

若要修改新尾碼建立時將使用的預設索引組,請參閱<修改預設索引組>

下表列出 Directory Server 中預先設定的預設索引:

表 10-2    每個新尾碼的預設索引 

屬性

相等索引

存在索引

子字串索引

目的

cn

X

X

X

改善最常使用類型的使用者目錄搜尋效能。

givenName

X

X

X

改善最常使用類型的使用者目錄搜尋效能。

mail

X

X

X

改善最常使用類型的使用者目錄搜尋效能。

mailAlternateAddress

X

由 Sun ONE Messaging Server 所使用。

mailHost

X

由 Sun ONE Messaging Server 所使用。

member

X

改善 Sun ONE 伺服器效能。參考的完整性外掛程式也會使用此索引。如需詳細資訊,請參閱<維護參考的完整性>

nsCalXItemId

X

X

X

由 Sun ONE Calendar Server 所使用。

nsLIProfileName

X

由 Sun ONE Messaging Server 的漫遊功能所使用。

nsRoleDN

X

改善以角色為基礎的作業效能。

nswcalCALID

X

由 Sun ONE Calendar Server 所使用。

owner

X

改善 Sun ONE 伺服器效能。參考的完整性外掛程式也會使用此索引。如需詳細資訊,請參閱《Sun ONE Directory Server 管理指南》。

pipstatus

X

由 Sun ONE 伺服器所使用。

pipuid

X

由 Sun ONE 伺服器所使用。

seeAlso

X

改善 Sun ONE 伺服器效能。參考的完整性外掛程式也會使用此索引。如需詳細資訊,請參閱<維護參考的完整性>

sn

X

X

X

改善最常使用類型的使用者目錄搜尋效能。

telephoneNumber

X

X

X

改善最常使用類型的使用者目錄搜尋效能。

uid

X

改善 Sun ONE 伺服器效能。

uniquemember

X

改善 Sun ONE 伺服器效能。參考的完整性外掛程式也會使用此索引。如需詳細資訊,請參閱<維護參考的完整性>

資料庫中的標準索引檔案

因為需要維護預設索引及其他內部索引機制,Directory Server 也會維護若干標準索引檔案。以下為依據預設存在的標準索引。您不需要產生他們:

  • databaseName_id2entry.db3 - 包含實際目錄資料庫項目。可以從此建立所有其他資料庫檔案。
  • databaseName_id2children.db3 - 限制單層搜尋的範圍,也就是檢查項目下一層子項的搜尋。
  • databaseName_dn.db3 - 控制樹狀子目錄搜尋的範圍;也就是搜尋項目及其下樹狀子目錄中的所有項目。
  • databaseName_dn2id.db3 - 藉由將項目的辨別名稱對應到它的 ID 號碼,以有效率地開始所有搜尋。

屬性名稱快速參考表

下表列出所有具有主要或真實名稱以及別名的屬性。建立索引時,請確認使用主要名稱。

表 10-3    主要屬性名稱及其別名 

主要屬性名稱

屬性別名

authorCn

documentAuthorCommonName

authorSn

documentAuthorSurname

c

countryName

cn

commonName

co

friendlyCountryName

dc

domainComponent

dn

distinguishedName

drink

favoriteDrink

facsimileTelephoneNumber

fax

l

localityName

labeledUri

labeledUrl

mail

rfc822mailbox

mobile

mobileTelephoneNumber

o

organizationName

ou

organizationalUnitName

pager

pagerTelephoneNumber

sn

surname

st

stateOrProvinceName

street

streetAddress

ttl

timeToLive

uid

userId

管理索引

本節描述如何使用 Directory Server 主控台 和指令行來為特定屬性建立及移除存在、相等、近似、子字串與國際索引。關於虛擬清單檢視 (VLV) 作業前必須執行的獨立程序,請參閱<管理瀏覽索引>



注意

因為索引是每個尾碼特有的,您必須記得在每一個尾碼組態中建立您自己的新索引。

當您用主控台建立新尾碼時,您可以選擇複製現有尾碼的索引組態。



建立新索引前,請先衡量維護索引的成本與效益。請記住:

  • 近似索引不適合使用在包含一般數值的屬性上,例如電話號碼,因為這樣是沒有效率的。
  • 若為二進位屬性,則子字串索引無法運作。相等索引不應該用於較大的數值,例如 jpegPhoto 這類計劃包含二進位資料的屬性。
  • 維護索引需要更多資源,因此,只有一般搜尋的屬性才應該要編製索引。項目建立將會需要更多 CPU 時間,因為伺服器必須檢查所有編製索引屬性,並且產生新項目中所包含之各索引屬性新項目。
  • 各索引檔大小為目錄內容的等比例。
  • 視搜尋類型而定,雖然搜尋效能無法和編製索引的搜尋效能相提並論,但是搜尋要求中仍然可以指定沒有編製索引的屬性。

使用主控台管理索引

如果您計劃在許多屬性上修改或加入索引,您應該先將尾碼設為唯讀,再將其內容匯出到 LDIF。接著利用從 LDIF 檔案重新初始化尾碼的方式,將會比尾碼重新編製索引的速度快。

  1. 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點,並選擇要編製索引的尾碼。
  2. 「系統索引」表不得修改。請在「額外索引」表中的屬性上加入、修改或移除索引。

  3. 若要在尚未編製索引的屬性上加入索引,請按一下 [加入屬性] 按鈕。在顯示的對話方塊中,選擇一或多個要編製索引的屬性,再按一下 [確定]。
  4. 新屬性出現在「額外索引」表中。

  5. 若要修改屬性的索引,請在「額外索引」表中選擇或取消選取要為該屬性維護之每種索引類型旁的核取方塊。
  6. 如果要為包含非英文值的屬性建立索引,請在 [對應規則] 欄位中輸入要使用之定序排序的 OID。
  7. 您可以用逗號分隔 (但不可以有空格) 列出多個 OID,來用多種語言為屬性編製索引。如需支援的地區設定清單,及其關聯定序排序的 OID,請參閱《Sun ONE Directory Server 參考手冊》中的附錄 C<目錄國際化>

  8. 若要移除屬性的所有索引,請在表格中選擇它的列,再按一下 [刪除屬性] 按鈕。
  9. 按一下 [儲存] 以儲存新的索引組態。
  10. 如果移除屬性的所有索引,伺服器將移除該屬性的每個索引檔案,至此組態就已完成。如果您修改屬性的索引,或加入新索引,請繼續進行下一個步驟。

  11. 出現警告對話方塊,通知您必須更新資料庫檔案,才能開始使用新索引。您可以重新編製尾碼索引,或將尾碼重新初始化。
  12. 如果只加入或修改一或兩個索引,或是您的尾碼不得設為無法使用,您應該重新編製尾碼索引。請按一下 [重新索引尾碼],以顯示重新編製索引對話方塊。預設狀況下會選擇您對索引組態修改或加入的屬性。按一下 [確定] 以開啟重新編製這些屬性的索引。對於有幾百萬筆項目的目錄,若重新編製許多屬性的索引可能要花費幾個小時的時間才能完成,但在重新編製索引期間,尾碼將始終處於線上的狀態。
  13. 如果在幾個屬性上加入或修改索引,而且您有一個從這個尾碼匯出的最新 LDIF 檔案,請按一下 [初始化尾碼] 按鈕。在 [初始化尾碼] 對話方塊中,輸入或瀏覽 LDIF 檔案的路徑與名稱,再按一下 [確定]。伺服器將從 LDIF 檔案重新初始化尾碼,並根據新組態建立所有索引。依目錄大小而定,重新初始化尾碼通常會比重新編製兩個或多個屬性的索引快,但在初始化過程中,尾碼將無法使用。
  14. 如果不將尾碼重新編製索引或初始化,所有資料仍將可以使用,但不會建立您的新索引,也不會改善目錄存取的效能。

如果將尾碼重新編製索引或初始化,則對於任何新資料,或是目錄中任何現有的資料,新索引都會立即生效。您不需要重新啟動伺服器。

從指令行管理索引

從指令行建立或修改索引分為兩個步驟:

  • 使用 ldapmodify 指令行公用程式加入或修改索引組態項目。每個尾碼中的索引都是分別設定,索引組態項目與對應的資料庫組態儲存在一起。
  • 執行 db2index.pl perl 指令檔 (在 Solaris Packages中是 directoryserver db2index-task) 以產生新的索引組,讓伺服器進行維護。


  • 小心

    您不可以刪除系統索引,因為將其刪除可能會嚴重影響 Directory Server 效能。系統索引位於 cn=index,cn=databaseName,cn=ldbm database,cn=plugins,cn=config 項目和 cn=default indexes,cn=config,cn=ldbm database,cn=plugins,cn=config 項目中。

    刪除預設索引時要小心,因為這也可能會影響到Directory Server的運作方式。



建立索引組態項目

若要為尚未編製索引的屬性建立索引,您必須在對應資料庫的組態中為該屬性建立新的項目。

索引組態項目擁有下列 DN:

cn=attributeName,cn=index,cn=databaseName,cn=ldbm database,
 cn=plugins,cn=config

其中 databaseName 是要建立索引之尾碼的對應資料庫名稱。例如,下列指令將為法文的 sn (姓氏) 屬性值建立存在、相等、子字串和「發音類似」索引:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=sn,cn=index,cn=databaseName,cn=ldbm database,
 cn=plugins,cn=config
objectClass:top
objectClass:nsIndex
cn:sn
nsSystemIndex:false
nsIndexType:pres
nsIndexType:eq
nsIndexType:sub
nsIndexType:approx
nsMatchingRule: 1.3.6.1.4.1.42.2.27.9.4.76.1

索引組態項目擁有 nsIndex 物件類別,而且 nsSystemIndex 屬性必須存在,它的值必須是 false。您無法建立新的系統索引。系統只維護由 Directory Server 內部定義的現有系統索引。

nsIndexType 屬性的值列出將為指定屬性維護的索引。請使用上述任何值定義對應的索引。

您也可以用單一值 none 明確停用屬性的索引,例如,暫時停用屬性的索引編製工作。如果索引組態項目中不包含 nsIndexType 屬性,將預設為維護所有索引。

選用的 nsMatchingRule 屬性包含國際化索引的語言定序排序 OID。如需支援的地區設定清單,及其關聯定序排序的 OID,請參閱《Sun ONE Directory Server 參考手冊》中的附錄 C<目錄國際化>

如需關於索引組態屬性的詳細資料,請參閱《Sun ONE Directory Server 參考手冊》第 5 章的<預設索引屬性>



注意

建立索引時,您應該永遠使用屬性的主要名稱 (不是屬性別名)。屬性的主要名稱為該結構中之屬性所列示的第一個名稱,例如 userid 屬性的 uid。如需所有主要與別名屬性名稱清單,請參閱表 10-3



修改索引組態項目

若要設定屬性上已定義的索引,請修改對應的索引項目。例如,下列在先前定義的 sn 索引組態上執行的指令將移除「發音類似」索引,並將語言改為加拿大法文:

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=sn,cn=index,cn=databaseName,cn=ldbm database,
 cn=plugins,cn=config
changetype:modify
delete:nsIndexType
nsIndexType:approx
-
replace:nsMatchingRule
nsMatchingRule: 1.3.6.1.4.1.42.2.27.9.4.78.1
^D

執行 db2index.pl 指令檔

建立索引項目後,若在現有索引項目上加入其他索引類型,或修改其定序排序,則執行 db2index.pl 指令檔 (在 Solaris Packages 中是 directoryserver db2index-task) 即可產生新的索引。這個指令檔會讀取尾碼的內容,再根據其組態項目為指定屬性編製索引。

當這個指令正在執行時,使用者仍然可以透過伺服器取得尾碼的內容,但在指令檔完成之前,搜尋將以無索引方式進行。重新編製索引作業需要耗費大量資源,因此可能會影響伺服器上其他作業的效能。依目錄大小而定,重新初始化尾碼通常會比重新編製兩個或多個屬性的索引快,但在初始化過程中,尾碼將無法使用。如需詳細資訊,請參閱<重新初始化尾碼>

此指令檔的指令與平台相關:

Solaris Packages

# /usr/sbin/directoryserver db2index-task

Windows 平台

cd ServerRoot
bin\slapd\admin\bin\perl slapd-serverID\db2index.pl

其他安裝

# ServerRoot/slapd-serverID/db2index.pl

下列範例會在 databaseName 對應的尾碼中重新產生 sn 索引。

UNIX Shell 指令檔:

# use directoryserver db2index-task in the Solaris Packages
/var/Sun/mps/slapd-example/db2index.pl \
  -D "cn=Directory Manager" -w password -n databaseName -t sn

Windows 批次檔:

C:\Program Files\Sun\MPS\bin\slapd\admin\bin\perl.exe
  C:\Program Files\Sun\MPS\slapd-example\db2index.pl
    -
D "cn=Directory Manager" -w password -n databaseName -t sn

如需詳細資訊,請參閱《Sun ONE Directory Server 參考手冊》第 2 章的<db2index.pl>

刪除屬性的所有索引

如果要移除為屬性設定的所有索引,您可以移除其組態項目和資料庫檔案。例如,下列指令將取消設定 databaseName 資料庫中 sn 屬性的所有索引。

ldapdelete -h host -p port -D "cn=Directory Manager" -w password \
"cn=sn,cn=index,cn=databaseName,cn=ldbm database,cn=plugins, \
 cn=config"

一旦刪除這個項目後,databaseName 資料庫對應的尾碼中將不再維護 sn 屬性的索引。若要節省磁碟空間,您也可以刪除對應的索引檔案,因為伺服器將再也用不到該檔案。在此範例中,您可以刪除下列檔案:

ServerRoot/slapd-serverID/db/databaseName/databaseName_sn.db3

重新編製尾碼索引

如果您的索引檔案毀損,您必須重新編製尾碼索引,在對應的資料庫目錄中重新建立索引檔案。使用Directory Server 主控台重新編製尾碼索引的方式有二:重新編製索引或重新初始化。

重新編製尾碼索引

當您重新編製尾碼索引時,伺服器會檢查它包含的所有項目,並重新建立索引檔案。重新編製索引期間,尾碼的內容仍可供讀取與寫入作業使用。但是,伺服器必須掃描整個尾碼中要重新編製索引的每一個屬性,所以在包含數百萬筆項目的尾碼中,這可能要耗費幾個小時的時間才能完成 (依設定的索引而定)。而且,在重新編製索引期間,索引將無法使用,伺服器效能將會受到影響。

若要使用主控台重新編製尾碼索引:

  1. 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點以顯示要重新編製索引的尾碼。
  2. 以滑鼠右鍵按一下尾碼組態節點,再選擇快顯功能表中的 [重新索引]。或者,您可以在節點上按一下滑鼠左鍵以選擇節點,再從 [物件] 功能表中選擇 [重新索引]。
  3. 出現 [重新索引尾碼] 對話方塊,列出所選尾碼上已編製索引的所有屬性清單。

  4. 選擇要重新編製索引的每個屬性旁的核取方塊。使用 [全部檢查] 和 [不檢查] 按鈕可幫您選擇項目。因為指定屬性的所有索引都儲存在同一個資料庫檔案中,您必須一起將它們全部重新編製索引。
  5. 按一下 [確定]。主控台顯示確認訊息,說明重新編製索引過程中可能發生非預期的搜尋結果,以及對效能的影響等。
  6. 按一下 [是] 開始重新編製索引。
  7. 主控台顯示對話方塊,內含有關重新編製索引的任何訊息。完成後請關閉對話方塊。

若要從指令行重新編製尾碼索引,請依照<執行 db2index.pl 指令檔>中的指示進行,並指定所有要重新建立索引檔案的屬性。

重新初始化尾碼

當您重新初始化尾碼時,其內容會被取代,並在匯入新內容時建立新的索引檔案。重新初始化尾碼通常會比重新編製多於一個屬性的索引快,因為在載入項目的同時,只要一個階段即完成屬性的索引編製。但是在重新初始化期間,尾碼將無法使用。

以下所有步驟都可以使用 Directory Server 主控台或從指令行執行:

  1. <設定存取權限及轉介>所述將尾碼設為唯讀狀態。您必須先將尾碼設為無法寫入,這樣在匯出內容後才不會發生任何修改。
  2. <使用主控台將單一尾碼匯出到 LDIF>所述將整個尾碼匯出到 LDIF 檔案。
  3. <初始化尾碼>所述匯入同一個 LDIF 檔案,以重新初始化尾碼。
  4. 初始化期間,尾碼將無法使用。當初始化完成時,所有設定的索引將已準備好可供使用。

  5. <設定存取權限及轉介>所述重新將尾碼設為可寫入。

修改預設索引組

建立新尾碼時所用的預設索引組是在下列項目下定義:

cn=default indexes,cn=config,cn=ldbm database,
 cn=plugins,cn=config

每當您使用主控台或從指令行建立尾碼時,就會依原狀複製預設索引定義,成為對應資料庫的初始索引組態。

預設索引組只可用指令行公用程式進行設定。預設索引項目的語法與<從指令行管理索引>中所述的索引組態項目完全一樣。例如,使用下列 ldapmodify 指令即可加入預設索引組態項目:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=drink,cn=default indexes,cn=config,cn=ldbm database,
 cn=plugins,cn=config
objectClass:top
objectClass:nsIndex
cn:drink
nsSystemIndex:false
nsIndexType:eq
nsIndexType:sub
nsMatchingRule: 1.3.6.1.4.1.42.2.27.9.4.76.1

加入此項目後,任何新尾碼都會將 drink 屬性的值編製索引,以進行法文的相等和子字串搜尋。

若要修改或刪除預設索引項目,請使用 ldapmodifyldapdelete 指令編輯 cn=default indexes,cn=config,cn=ldbm database,cn=plugins,cn=config 中的索引組。

管理瀏覽索引

瀏覽索引是特殊的索引,只供要求伺服器端排序或虛擬清單檢視 (VLV) 結果的搜尋作業使用。對於要求將大量結果進行伺服器端排序的搜尋,使用瀏覽索引可以改善搜尋的效能。在未定義瀏覽索引時,伺服器可拒絕執行要求排序的搜尋要求 (依目錄組態而定);以防止大量的排序作業導致伺服器資源負載過重。

瀏覽索引套用在作為搜尋基礎的項目,而且您必須為排序要求中使用的每一個搜尋條件各建立一個索引。例如,如果用戶端應用程式經常要求所有使用者的排序清單,您可以針對用戶端所用的篩選字串在 ou=People 上建立瀏覽索引。

就如同其他索引一樣,為維護瀏覽索引所需的更新作業過程中會有效能變慢的問題。您應該小心規劃並測試瀏覽索引的部署。

主控台的瀏覽索引

Directory Server 主控台經常執行整個目錄的搜尋,以重新整理面板的內容。如果您已依<樹狀目錄檢視選項>所述將主控台設成會排序樹狀目錄中的項目,您應該為主控台建立瀏覽索引。

主控台的瀏覽索引是主控台所執行的搜尋特有的。它們也是使用主控台來建立。若要為主控台建立瀏覽索引:

  1. 在 Directory Server 主控台最上層的 [目錄] 標籤上,瀏覽樹狀目錄,以顯示必須排序的大型樹狀子目錄的父項,例如包含數千筆使用者項目的 ou=People,dc=example,dc=com
  2. 以滑鼠右鍵按一下父項,再選擇快顯功能表中的 [建立瀏覽索引]。或者,以滑鼠左鍵按一下項目以選擇項目,再從 [物件] 功能表中選擇 [建立瀏覽索引]。
  3. [建立瀏覽索引] 對話方塊顯示索引建立的狀態。主控台會建立以下所示的瀏覽索引組態項目,然後產生索引檔案的內容。

  4. 按一下 [關閉] 以關閉 [建立瀏覽索引] 對話方塊。
  5. 對於任何主控台重新整理作業,新索引會立即生效,而且加入目錄的任何新資料都將受到維護。您不需要重新啟動伺服器。

主控台的瀏覽索引組態由下列項目組成。vlvSearch 項目定義即將編製索引之搜尋的基礎、範圍與篩選。vlvIndex 項目的 vlvSort 屬性顯示 [目錄] 標籤上支援排序的屬性,及其排序順序:

dn:cn=MCC entryDN,cn=databaseName,cn=ldbm database,
 cn=plugins,cn=config
objectClass:top
objectClass:vlvSearch
cn:MCC entryDN
vlvBase:"entryDN"
vlvScope: 1
vlvFilter:(|(objectclass=*)(objectclass=ldapsubentry))

dn:cn=by MCC entryDN, cn=MCC entryDN,cn=databaseName,
 cn=ldbm database,cn=plugins,cn=config
objectClass:top
objectClass:vlvIndex
cn:by MCC entryDN
vlvSort:cn givenname o ou sn uid

若要刪除 Directory Server 主控台的瀏覽索引:

  1. 在 Directory Server 主控台最上層的 [目錄] 標籤上,瀏覽樹狀目錄,以顯示已建立瀏覽索引的項目。
  2. 以滑鼠右鍵按一下項目,再選擇快顯功能表中的 [刪除瀏覽索引]。或者,以滑鼠左鍵按一下項目以選擇項目,再從 [物件] 功能表中選擇 [刪除瀏覽索引]。只有當所選項目擁有主控台的瀏覽索引時,這個功能表項目才會有作用。
  3. 顯示 [刪除瀏覽索引] 對話方塊要求您確認要刪除索引。按一下 [是] 以刪除瀏覽索引。

用戶端搜尋的瀏覽索引

排序用戶端搜尋結果的自訂瀏覽索引必須手動定義。從指令行建立瀏覽索引或虛擬清單檢視 (virtual list view, VLV) 包括兩個步驟:

  • 使用 ldapmodify 公用程式或 Directory Server 主控台的 [目錄] 標籤加入新的瀏覽索引項目,或編輯現有的瀏覽索引項目。
  • 執行 vlvindex (在 Solaris Packages中是 directoryserver vlvindex) 指令檔以產生新的瀏覽索引組,讓伺服器進行維護。

指定瀏覽索引項目

瀏覽索引是指定基礎項目及其樹狀子目錄上的指定搜尋特有的。瀏覽索引組態定義於包含項目的尾碼的資料庫組態中。



注意

您無法在鏈結尾碼上建立瀏覽索引,只能在本機尾碼和子尾碼上建立。



有兩個項目要設定瀏覽索引。第一個使用 vlvSearch 物件類別,並指定將編製索引之搜尋作業的基礎、範圍與篩選。第二個項目是第一個項目的子項,並使用 vlvIndex 物件類別指定要排序的屬性,以及排序的順序。

以下範例使用 ldapmodify 公用程式建立瀏覽索引組態項目:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=Browsing ou=People, cn=databaseName,
 cn=ldbm database,cn=plugins,cn=config
objectClass:top
objectClass:vlvSearch
cn:Browsing ou=People
vlvbase:ou=People,dc=example,dc=com
vlvscope: 1
vlvfilter:(objectclass=inetOrgPerson)

dn:cn=Sort rev employeenumber, cn=Browsing ou=People,
 cn=databaseName,cn=ldbm database,cn=plugins,cn=config
objectClass:top
objectClass:vlvIndex
cn:Sort rev employeenumber
vlvSort:-employeenumber
^D

vlvscope 可能是 0 代表僅限基礎項目、1 代表基礎的下一層子項或 2 代表以基礎為根部的整個樹狀子目錄。vlvfilter 是用戶端搜尋作業中即將使用的同一個 LDAP 篩選。因為所有瀏覽索引項目位在同一個位置,建議您使用描述性的 cn 值為您的瀏覽索引命名。

每個 vlvSearch 項目必須至少擁有一個 vlvIndex 項目。vlvSort 屬性是定義排序屬性及排序順序的屬性名稱清單。屬性名稱前的虛線 (-) 指示反向排序。您可以定義數個 vlvIndex 項目,即可為搜尋定義多個索引。延續上個範例,您可以加入下列項目:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=Sort sn givenname uid, cn=Browsing ou=People,
 cn=databaseName,cn=ldbm database,cn=plugins,cn=config
objectClass:top
objectClass:vlvIndex
cn:Sort sn givenname uid
vlvSort:sn givenname uid
^D

若要修改瀏覽索引組態,請編輯對應的 vlvSearchvlvIndex 項目。若要移除瀏覽索引,讓伺服器不再維護此索引,請移除個別的 vlvIndex 項目,或如果只有一個這類項目,請同時移除 vlvSearch 項目和 vlvIndex 項目。當您移除 vlvIndex 項目時,您也可以移除對應的資料庫檔案,例如:

ServerRoot/slapd-serverID/db/dbName/dbName_vlv#Sortsngivennameuid.db3

執行 vlvindex 指令

建立瀏覽索引項目或修改瀏覽索引項目後,您必須執行 vlvindex 指令 (在 Solaris Packages 中是 directoryserver vlvindex) 以產生新的瀏覽索引組。這個指令將掃描目錄內容,並為瀏覽索引建立資料庫檔案。

若要產生瀏覽索引,請使用下列指令:

Solaris Packages

# /usr/sbin/directoryserver vlvindex

其他安裝

# installDir/slapd-serverID/vlvindex

以下範例會產生上一節定義的瀏覽索引:

# vlvindex -n databaseName -T "Browsing ou=People"

表 10-4    範例中使用的 vlvindex 選項描述

選項

描述

-n

請指定含有需要索引項目的資料庫名稱。

-T

指定對應的瀏覽索引的 vlvSearch 項目的命名屬性值。將產生對應到指定 vlvSearch 項目的 vlvIndex 項目的所有索引。

如需詳細資訊,請參閱《Sun ONE Directory Server 參考手冊》第 2 章的 <vlvindex>


上一章     目錄     索引     說明文件首頁     下一章    
版權所有 2003 Sun Microsystems, Inc. 保留所有權利。