2013-10-07 27 views
0

我正在開發一個項目,我必須索引圖像及其文本元數據。我首先想到了Lucene,但它不支持圖像。然後我發現了LIRE,但它只能處理圖像,並且不會處理元數據。在Java中索引

是否有一個開源的解決方案,在單個索引中索引圖像及其元數據?

否則,我發現的唯一解決方案是有兩個單獨的索引併合並結果。我突然想不出如何合併它們,因爲考慮到每個索引圖像匹配一組索引元數據。 在這種情況下,我可能需要一種將元數據集與圖像鏈接的方法。

你能向我解釋我如何實際合併結果嗎?

回答

1

我對LIRE並不熟悉,但看起來您會使用DocumentBuilder創建文檔。當你從一個文檔回來,你可以輕鬆地添加你自己的屬性吧,如:

DocumentBuilder builder = /*create your builder*/ 
Document doc = builder.createDocument(image, id); 
Field metadata = /*create your metadata field*/ 
doc.add(metadata); 
indexWriter.addDocument(doc); 

這將允許您利用里拉圖像識別,並能夠基於元數據分別進行搜索。如果您需要能夠將這兩者進行混合,例如通過某些元數據匹配約束過濾了圖像識別搜索,則您可能需要自行實施。查看GenericFastImageSearcher的代碼,它實際上並不構建Lucene查詢,而是迭代圖像並進行比較以找到最佳匹配。您應該可以創建自己的findSimilar方法,在迭代循環中通過simiply繼續在不符合的地方過濾結果:

for (int i = 0; i < docs; i++) { 
    if (reader.hasDeletions() && !liveDocs.get(i)) continue; 
    d = reader.document(i); 
    if (!d.getField("metadata").equals(constraint)) continue; 
+0

謝謝。我會研究這一點。 – qbisson