From e618eb051246e7941dc2964a5038587c9d45d1d2 Mon Sep 17 00:00:00 2001
From: Luca Milanesio <luca.milanesio@gmail.com>
Date: Wed, 09 Sep 2015 12:00:05 -0400
Subject: [PATCH] Bump to Lucene 5.2.1

---
 src/main/java/com/gitblit/service/LuceneService.java |   33 +++++++++++++++++----------------
 1 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/gitblit/service/LuceneService.java b/src/main/java/com/gitblit/service/LuceneService.java
index 482be5c..59b1ff2 100644
--- a/src/main/java/com/gitblit/service/LuceneService.java
+++ b/src/main/java/com/gitblit/service/LuceneService.java
@@ -105,7 +105,7 @@
 public class LuceneService implements Runnable {
 
 
-	private static final int INDEX_VERSION = 5;
+	private static final int INDEX_VERSION = 6;
 
 	private static final String FIELD_OBJECT_TYPE = "type";
 	private static final String FIELD_PATH = "path";
@@ -125,7 +125,7 @@
 	private static final String CONF_ALIAS = "aliases";
 	private static final String CONF_BRANCH = "branches";
 
-	private static final Version LUCENE_VERSION = Version.LUCENE_46;
+	private static final Version LUCENE_VERSION = Version.LUCENE_4_10_0;
 
 	private final Logger logger = LoggerFactory.getLogger(LuceneService.class);
 
@@ -267,7 +267,7 @@
 		// close all writers
 		for (String writer : writers.keySet()) {
 			try {
-				writers.get(writer).close(true);
+				writers.get(writer).close();
 			} catch (Throwable t) {
 				logger.error("Failed to close Lucene writer for " + writer, t);
 			}
@@ -437,7 +437,7 @@
 					// skip non-annotated tags
 					continue;
 				}
-				if (!tags.containsKey(tag.getObjectId().getName())) {
+				if (!tags.containsKey(tag.getReferencedObjectId().getName())) {
 					tags.put(tag.getReferencedObjectId().getName(), new ArrayList<String>());
 				}
 				tags.get(tag.getReferencedObjectId().getName()).add(tag.displayName);
@@ -615,7 +615,7 @@
 			}
 
 			// finished
-			reader.release();
+			reader.close();
 
 			// commit all changes and reset the searcher
 			config.setInt(CONF_INDEX, null, CONF_VERSION, INDEX_VERSION);
@@ -722,8 +722,8 @@
 		String q = MessageFormat.format(pattern, SearchObjectType.blob.name(), branch, path);
 
 		BooleanQuery query = new BooleanQuery();
-		StandardAnalyzer analyzer = new StandardAnalyzer(LUCENE_VERSION);
-		QueryParser qp = new QueryParser(LUCENE_VERSION, FIELD_SUMMARY, analyzer);
+		StandardAnalyzer analyzer = new StandardAnalyzer();
+		QueryParser qp = new QueryParser(FIELD_SUMMARY, analyzer);
 		query.add(qp.parse(q), Occur.MUST);
 
 		IndexWriter writer = getIndexWriter(repositoryName);
@@ -968,14 +968,14 @@
 		IndexWriter indexWriter = writers.get(repository);
 		File repositoryFolder = FileKey.resolve(new File(repositoriesFolder, repository), FS.DETECTED);
 		File indexFolder = new File(repositoryFolder, LUCENE_DIR);
-		Directory directory = FSDirectory.open(indexFolder);
+		Directory directory = FSDirectory.open(indexFolder.toPath());
 
 		if (indexWriter == null) {
 			if (!indexFolder.exists()) {
 				indexFolder.mkdirs();
 			}
-			StandardAnalyzer analyzer = new StandardAnalyzer(LUCENE_VERSION);
-			IndexWriterConfig config = new IndexWriterConfig(LUCENE_VERSION, analyzer);
+			StandardAnalyzer analyzer = new StandardAnalyzer();
+			IndexWriterConfig config = new IndexWriterConfig(analyzer);
 			config.setOpenMode(OpenMode.CREATE_OR_APPEND);
 			indexWriter = new IndexWriter(directory, config);
 			writers.put(repository, indexWriter);
@@ -1028,16 +1028,16 @@
 			return null;
 		}
 		Set<SearchResult> results = new LinkedHashSet<SearchResult>();
-		StandardAnalyzer analyzer = new StandardAnalyzer(LUCENE_VERSION);
+		StandardAnalyzer analyzer = new StandardAnalyzer();
 		try {
 			// default search checks summary and content
 			BooleanQuery query = new BooleanQuery();
 			QueryParser qp;
-			qp = new QueryParser(LUCENE_VERSION, FIELD_SUMMARY, analyzer);
+			qp = new QueryParser(FIELD_SUMMARY, analyzer);
 			qp.setAllowLeadingWildcard(true);
 			query.add(qp.parse(text), Occur.SHOULD);
 
-			qp = new QueryParser(LUCENE_VERSION, FIELD_CONTENT, analyzer);
+			qp = new QueryParser(FIELD_CONTENT, analyzer);
 			qp.setAllowLeadingWildcard(true);
 			query.add(qp.parse(text), Occur.SHOULD);
 
@@ -1060,7 +1060,7 @@
 			Query rewrittenQuery = searcher.rewrite(query);
 			logger.debug(rewrittenQuery.toString());
 
-			TopScoreDocCollector collector = TopScoreDocCollector.create(5000, true);
+			TopScoreDocCollector collector = TopScoreDocCollector.create(5000);
 			searcher.search(rewrittenQuery, collector);
 			int offset = Math.max(0, (page - 1) * pageSize);
 			ScoreDoc[] hits = collector.topDocs(offset, pageSize).scoreDocs;
@@ -1104,6 +1104,7 @@
 			content = "";
 		}
 
+		int tabLength = storedSettings.getInteger(Keys.web.tabLength, 4);
 		int fragmentLength = SearchObjectType.commit == result.type ? 512 : 150;
 
 		QueryScorer scorer = new QueryScorer(query, "content");
@@ -1126,7 +1127,7 @@
 			if (fragment.length() > fragmentLength) {
 				fragment = fragment.substring(0, fragmentLength) + "...";
 			}
-			return "<pre class=\"text\">" + StringUtils.escapeForHtml(fragment, true) + "</pre>";
+			return "<pre class=\"text\">" + StringUtils.escapeForHtml(fragment, true, tabLength) + "</pre>";
 		}
 
 		// make sure we have unique fragments
@@ -1224,7 +1225,7 @@
 	 */
 	private class MultiSourceReader extends MultiReader {
 
-		MultiSourceReader(IndexReader [] readers) {
+		MultiSourceReader(IndexReader [] readers) throws IOException {
 			super(readers, false);
 		}
 

--
Gitblit v1.9.1