Lucene 2.4ã¨Lucene 2.0ã®ã¤ã³ããã¯ã¹æ§ç¯é度æ¯è¼
Luceneã¯ãこちらのベンチマークãªã©ãè¦ãéããSennaãªã©ä»ã®å ¨ææ¤ç´¢ã¨ã³ã¸ã³ã«æ¯ã¹ã¦ç¸å½é ãã¨ããã¦ããããã§ãã
ä¸è¨ãã¼ã¸ã®ãã³ããã¼ã¯ã§ã¯Lucene 2.0ã使ããã¦ãã¾ããåãæ°å¹´åã«Lucene 2.0ã使ã£ããã¨ããã£ã¦ããã以éã¯Luceneã«è§¦ãã¦ããªãã£ããã§ãããæè¿ã®ãã¼ã¸ã§ã³ã¯ããã©ã¼ãã³ã¹ãå¤§å¹ ã«æ¹åããã¦ãããããªã®ã§ãã©ããããéããªã£ãã®ããã¤ã³ããã¯ã¹ä½æé度ãæ¯è¼ãã¦ã¿ã¾ããã
æ¯è¼ã«ä½¿ã£ãã®ã¯Lucene 2.4.1ï¼2009/03ï¼ã¨Lucene 2.0.0ï¼2006/05ï¼ã§ãã以ä¸ã®æ¡ä»¶ã§ã¤ã³ããã¯ã¹ä½ææéãè¨æ¸¬ãã¾ããã
- ãã¼ã¿: æ¥æ¬èªçWikipediaã®ãã³ãããå é 20ä¸è¨äº
- ã¤ã³ããã¯ã¹å½¢å¼:
- è¨äºã¿ã¤ãã«: Store.YES, Index.ANALYZEDï¼å æååï¼ã¤ã³ããã¯ã¹ï¼
- è¨äºæ¬æ: Store.COMPRESS, Index.ANALYZEDï¼å§ç¸®å æç« ï¼ã¤ã³ããã¯ã¹ï¼
- ã¢ãã©ã¤ã¶: CJKAnalyzerï¼bi-gramï¼
- ãããã¡ãµã¤ãº: setMaxBufferedDocs(10000)
èªåã®ç°å¢ã§ã¯ã以ä¸ã®çµæãåºã¾ããã
ãã¼ã¸ã§ã³ | Lucene 2.4.1 | Lucene 2.0.0 |
---|---|---|
ã¤ã³ããã¯ã¹æ§ç¯æé | 377ç§ | 994ç§ |
å¦çè¨äºæ°ï¼1ç§ãããï¼ | 530.5 | 201.2 |
ã¤ã³ããã¯ã¹ãµã¤ãº | 1.04GB | 0.97GB |
Lucene 2.4.1ã®æ¹ã2.6åãéãã¨ããé©ãã®çµæã«ãªãã¾ãããæè¿ã®Luceneã¯ãããé å¼µã£ã¦ãã¨ãããã¨ãåããã¾ããã
æ¤è¨¼ã«ä½¿ã£ãããã°ã©ã ã¯ä»¥ä¸ã®éãã§ãï¼Lucene 2.4.1ç¨ãªã®ã§ã2.0.0ã«å¯¾å¿ãããã«ã¯è¥å¹²ä¿®æ£ãå¿ è¦ï¼ã
public class LuceneBenchmark { public static void main(String[] args) throws Exception { File dataFile = new File("C:/data/jawiki-20090124-pages-articles.xml"); File indexDir = new File("C:/data/index"); if (indexDir.exists()) { FileUtils.deleteDirectory(indexDir); } Analyzer analyzer = new CJKAnalyzer(); IndexWriter indexWriter = new IndexWriter(indexDir, analyzer, MaxFieldLength.UNLIMITED); indexWriter.setMaxBufferedDocs(10000); XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader xmlReader = factory .createXMLStreamReader(new FileInputStream(dataFile)); String title = null; int indexSize = 0; long start = System.currentTimeMillis(); for (; xmlReader.hasNext(); xmlReader.next()) { if (!xmlReader.isStartElement()) { continue; } String elemName = xmlReader.getName().getLocalPart(); if (elemName.equals("title")) { title = xmlReader.getElementText(); } else if (elemName.equals("text")) { String body = xmlReader.getElementText(); Document doc = new Document(); doc.add(new Field("title", title, Store.YES, Index.ANALYZED)); doc.add(new Field("body", body, Store.COMPRESS, Index.ANALYZED)); indexWriter.addDocument(doc); indexSize++; if (indexSize % 500 == 0) { System.out.println(indexSize); if (indexSize >= 200000) { break; } } } } xmlReader.close(); indexWriter.close(); long elapsed = System.currentTimeMillis() - start; System.out.println((elapsed / 1000) + " sec."); } }