W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
索引在 Xunsearch
中泛指用于檢索的數(shù)據(jù)庫文件總稱。每一次檢索數(shù)據(jù)均為訪問和讀取 索引文件,每一次更新數(shù)據(jù)則是對(duì)索引文件的修改。
Xunsearch
每個(gè)搜索項(xiàng)目的索引數(shù)據(jù)是分開單獨(dú)存放的,索引本質(zhì)上是一系列預(yù)設(shè)計(jì)文件, 內(nèi)部都是特別設(shè)計(jì)的 Tree
結(jié)構(gòu),但這些東西不是這份指南所關(guān)注的。假設(shè)一個(gè)項(xiàng)目的名稱 為 demo
(即 INI
文件中 project.name
的值),那么它在服務(wù)端的索引數(shù)據(jù)的存儲(chǔ) 路徑為:
$prefix/data/demo
該目錄底下包含 2 個(gè)主要索引數(shù)據(jù)庫,分別是
db
默認(rèn)的主索引數(shù)據(jù)庫,各種檢索數(shù)據(jù)均存放在此
log_db
搜索日志數(shù)據(jù)庫,用于存放搜索日志相關(guān),用于實(shí)現(xiàn)相關(guān)搜索、搜索建議、拼音搜索等
在 PHP-SDK
中,索引管理由類型為 XSIndex 的對(duì)象所維護(hù)。在 XS 項(xiàng)目中,通過讀取 XS::index 屬性來獲取索引管理對(duì)象,然后展開各種操作,而不是自行創(chuàng)建對(duì)象。后面章節(jié)中 的相關(guān)測(cè)試代碼如果沒有特別編寫,其中的$index
均為通過類似以下的方式獲取的索引對(duì)象:
require '$prefix/sdk/php/lib/XS.php';$xs = new XS('demo'); // 建立 XS 對(duì)象,項(xiàng)目名稱為:demo$index = $xs->index; // 獲取 索引對(duì)象
索引的維護(hù)包括數(shù)據(jù)修改/更新、數(shù)據(jù)刪除、添加數(shù)據(jù)等操作,由后面的篇幅分開詳細(xì)講解。
默認(rèn)使用的索引庫名稱為 db
,對(duì)應(yīng)到服務(wù)端的 $prefix/data/$name/db
,一般開發(fā)時(shí)不需要 關(guān)注這個(gè)本質(zhì)。但如果您的索引數(shù)據(jù)庫相當(dāng)大,希望對(duì)索引庫進(jìn)行適當(dāng)?shù)姆指睿梢宰悦碌乃饕龓臁?在搜索時(shí)可以使用XSSearch::addDb 進(jìn)行多庫并行搜索。
// 比如把當(dāng)前索引更新到名稱為 db2 的庫中$index->setDb('db2'); // 在檢索時(shí)同時(shí)搜索 db, db2 的作法,具體參考搜索的有關(guān)章節(jié)...$search->addDb('db2')->setQuery(...)->search();
有必要指出的是,出于性能優(yōu)化設(shè)計(jì),所有的索引操作(包含添加、刪除、修改文檔)均是異步的 行為。也就是說在 PHP-SDK
的相關(guān) API
返回后,只是說明已經(jīng)將索引變動(dòng)提交到操作隊(duì)列中, 而并不是已經(jīng)立即更新到磁盤上的索引數(shù)據(jù)庫文件。因此,搜索結(jié)果將不能立即體現(xiàn)出您的變動(dòng)。
但請(qǐng)放心,這個(gè)時(shí)間差我們已經(jīng)控制在非常合理的范圍內(nèi),通常是若干秒。
Note: 特別說明,索引清空是同步操作,立即生效。如果確實(shí)有必要,您可以以使用 Indexer的
--flush
選項(xiàng)來強(qiáng)制刷新索引。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: