1. field域
1.1 field的屬性
是:對該field儲存的內容進行分詞,分詞的目的,就是為了索引。
比如:商品名稱、商品描述、商品**
否:不需要對field儲存的內容進行分詞,不分詞,不代表不索引,而是將整個內容進行索引。
比如:商品id
是:將分好的詞進行索引,索引的目的,就是為了搜尋。
比如:商品名稱、商品描述、商品**、商品id
否:不索引,也就是不對該field域進行搜尋。
是:將field域中的內容儲存到文件域中。儲存的目的,就是為了搜尋頁面顯示取值用的。
比如:商品名稱、商品**、商品id、商品位址
否:不將field域中的內容儲存到文件域中。不儲存,則搜尋頁面中沒法獲取該field域的值。
比如:商品描述,由於商品描述在搜尋頁面中不需要顯示,再加上商品描述的內容比較多,所以就不需要進行儲存。如果需要商品描述,則根據搜尋出的商品id去資料庫中查詢,然後顯示出商品描述資訊即可。
1.2 field的常用型別
下邊列出了開發中常用
的filed型別,注意
field
的屬性,根據需求選擇:
field類
資料型別
analyzed
是否分詞
indexed
是否索引
stored
是否儲存
說明stringfield(fieldname, fieldvalue,store.yes))
字串nyy或n
這個field
用來構建乙個字串field
,但是不會進行分詞,會將整個串儲存在索引中,比如(訂單號,身份證號等
) 是否儲存在文件中用store.yes或store.no決定
longfield(fieldname, fieldvalue,store.yes)
long型 y
yy或n
這個field
用來構建乙個long
數字型field
,進行分詞和索引,比如(**)
是否儲存在文件中用store.yes或store.no決定
storedfield(fieldname, fieldvalue)
過載方法,支援多種型別nn
y這個field
用來構建不同型別field
不分析,不索引,但要field
儲存在文件中
textfield(fieldname, fieldvalue, store.no)
或textfield(fieldname, reader)
字串或流y
yy或n
如果是乙個reader, lucene
猜測內容比較多
,會採用
unstored
的策略.
1.3 修改入門程式的**
for2. 索引維護2.1 需求圖書資訊在資料庫(book book : list)
發生變化,所以索引庫相對應的也要發生增刪改變化。
2.2 增加索引
語法(具體參照建立索引的程式):indexwriter.adddocument(document);
······2.2 刪除索引增刪改操作//a)建立分詞器,標準分詞器(分析文件,對文件中的field域進行分詞)
analyzer analyzer = new
standardanalyzer();
//b)建立indexwriterconfig物件
indexwriterconfig cfg = new
indexwriterconfig(version.lucene_4_10_3, analyzer);
//c)建立索引庫目錄,指定索引庫的位址
file indexfile = new file("d:\\dbindex\\");
directory directory =fsdirectory.open(indexfile);
//d)建立indexwriter物件
indexwriter writer = new
indexwriter(directory, cfg);
//e)通過indexwriter物件將document寫入到索引庫中
for(document doc : doclist)
//f)關閉writer
writer.close();
······
,都是需要通過indexwriter物件來操作。
2.2.1根據條件刪除
term是索引域中最小的單位。根據條件刪除時,建議根據唯一鍵來進行刪除。在
solr
中就是根據
id來進行刪除和修改操作的。
@test2.3.2 刪除全部public
void deleteindex() throws
exception
@test2.4 修改索引public
void deleteindex() throws
exception
@testpublic
void updateindex() throws
exception
mysql的表索和行索 mysql行鎖和表鎖
在呼叫儲存過程中,就會涉及到表鎖,行鎖這一概念 所謂區別 有索引的時候就是行鎖,沒有索引的時候就是表索。innodb 的行鎖是在有索引的情況下,沒有索引的表是鎖定全表的.表鎖演示 無索引 session1 mysql set autocommit 0 mysql select from innodb...
Oracle的b tree和bitmap索引
number型別建立乙個bitmap索引 select from test where flag 1 執行結果 table access full 12573 分析 出現全表掃瞄而沒有執行位圖索引,可能是flag為1的資料量和表的資料量相當,所以優化器將其優化掉了.varchar2型別欄位上建立乙個...
mysql三表關聯加索引 mysql 三表索引優化
建表語句 create table if not exists phone phoneid int 10 unsigned not null auto increment,card int 10 unsigned not null,primary key phoneid engine innodb ...