Ok,我又來寫SOLR的內容了,昨天做了修改和增加的增量索引,今天來說說關於刪除的增量索引以及定時更新增量索引,廢話不多說,下麵進入正文。 一、增量索引之刪除 昨天已經說過,增量索引其實就是SOLR對上次做過(增量或者全量)索引之後到這次做索引之間的這段時間資料庫發生變化的數據進行創建索引,昨天我們 ...
Ok,我又來寫SOLR的內容了,昨天做了修改和增加的增量索引,今天來說說關於刪除的增量索引以及定時更新增量索引,廢話不多說,下麵進入正文。
一、增量索引之刪除
昨天已經說過,增量索引其實就是SOLR對上次做過(增量或者全量)索引之後到這次做索引之間的這段時間資料庫發生變化的數據進行創建索引,昨天我們說了增加一條數據或者修改一條數據之後創建增量索引,現在來說刪除數據的增量索引。
其實這裡所說的刪除是假刪除,什麼意思呢?就是並不是說在資料庫中把某些數據給徹底刪除掉,而是說給你不想創建索引的數據一個標識符,然後告訴solr,有這個標識符的數據你就不要給我創建索引了,我不需要,然後solr創建索引的時候就會忽視這些有特殊標識符的數據,大概的原理就是這樣的,那麼怎麼實現的呢?下麵來看:
1.1資料庫新增欄位
昨天做新增的增量索引的時候需要在資料庫添加一個欄位,今天做刪除的,還是需要一個欄位,然後用這個欄位來標示數據是否需要創建索引,欄位如下所示:
欄位名稱大家可以自己看著定,類型給個int就行,至於長度也隨意,我的是0表示需要創建索引的數據,1表示不需要創建索引的數據,也就是我所說的假刪除的數據。
1.2修改配置文件
同樣,需要將該欄位配置到data-config.xml和schema.xml文件中,如下所示:
data-config.xml
註意圈起來的三個地方,首先肯定是需要把isdelete欄位變成一個file標簽,其次,需要query語句需要添加上where條件,查詢出資料庫中所有的需要創建索引的數據,然後再添加一個deletedPKQuery語句,這條語句和deltaQuery與deltaImportQuery語句一樣,都是只有在做增量索引的時候起作用,deletedPKQuery是查詢出所有假刪除的數據的ID,然後由deltaImportQuery查詢出這些ID對應的記錄的全部數據,然後在已經創建的索引中刪除掉這一部分索引。
schema.xml
schema.xml文件中倒是沒有什麼大的變化,只需要把isdelete欄位添加進來即可:
1.3查看效果
按照上面的配置即可,然後我們來看一下效果,首先是資料庫: