public class indexing {
String directory="your_image_dataset";
String index="./images__idex";
int numClusters = 2000;
int numDocForVocabulary = 200;
public void IndexImage() throws IOException{
System.out.println("-< Getting files to index >--------------");
List<String> images = FileUtils.getAllImages(new File(directory), true);
System.out.println("-< Indexing " + images.size() + " files >--------------");
indexFiles(images, index);
}
private void indexFiles(List<String> images, String index)
throws FileNotFoundException, IOException {
ChainedDocumentBuilder documentBuilder = new ChainedDocumentBuilder();
documentBuilder.addBuilder(new SiftDocumentBuilder());
documentBuilder.addBuilder(DocumentBuilderFactory.getEdgeHistogramBuilder());
documentBuilder.addBuilder(DocumentBuilderFactory.getJCDDocumentBuilder());
documentBuilder.addBuilder(DocumentBuilderFactory.getColorLayoutBuilder());
IndexWriter iw = LuceneUtils.createIndexWriter(index, true);
int count = 0;
for (String identifier : images) {
Document doc = documentBuilder.createDocument(new
FileInputStream(identifier), identifier);
iw.addDocument(doc);
iw.close();
source
share