| | |
| | | }
|
| | |
|
| | | /**
|
| | | * Indicates if the Lucene executor can index repositories.
|
| | | * |
| | | * @return true if the Lucene executor is ready to index repositories
|
| | | */
|
| | | public boolean isReady() {
|
| | | return storedSettings.getBoolean(Keys.lucene.enable, false);
|
| | | }
|
| | |
|
| | | /**
|
| | | * Run is executed by the gitblit executor service at whatever frequency
|
| | | * is specified in the settings. Because this is called by an executor
|
| | | * service, calls will queue - i.e. there can never be concurrent execution
|
| | | * of repository index updates.
|
| | | * Run is executed by the Gitblit executor service. Because this is called |
| | | * by an executor service, calls will queue - i.e. there can never be
|
| | | * concurrent execution of repository index updates.
|
| | | */
|
| | | @Override
|
| | | public void run() {
|
| | | if (!isReady()) {
|
| | | return;
|
| | | }
|
| | |
|
| | | for (String repositoryName: GitBlit.self().getRepositoryList()) {
|
| | | RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
|
| | | if (model.hasCommits && !ArrayUtils.isEmpty(model.indexedBranches)) {
|
| | |
| | | IndexWriter writer = getIndexWriter(repositoryName);
|
| | | for (PathChangeModel path : changedPaths) {
|
| | | // delete the indexed blob
|
| | | deleteBlob(repositoryName, branch, path.path);
|
| | | deleteBlob(repositoryName, branch, path.name);
|
| | |
|
| | | // re-index the blob
|
| | | if (!ChangeType.DELETE.equals(path.changeType)) {
|
| | |
| | | }
|
| | | }
|
| | | writer.commit();
|
| | |
|
| | | Document doc = createDocument(commit, null);
|
| | | |
| | | // get any annotated commit tags
|
| | | List<String> commitTags = new ArrayList<String>();
|
| | | for (RefModel ref : JGitUtils.getTags(repository, true, -1)) {
|
| | | if (ref.isAnnotatedTag() && ref.getReferencedObjectId().equals(commit.getId())) {
|
| | | commitTags.add(ref.displayName);
|
| | | }
|
| | | }
|
| | | |
| | | // create and write the Lucene document
|
| | | Document doc = createDocument(commit, commitTags);
|
| | | doc.add(new Field(FIELD_BRANCH, branch, Store.YES, Index.ANALYZED));
|
| | | result.commitCount++;
|
| | | result.success = index(repositoryName, doc);
|
| | |
| | | Highlighter highlighter = new Highlighter(formatter, scorer);
|
| | | highlighter.setTextFragmenter(fragmenter);
|
| | |
|
| | | String [] fragments = highlighter.getBestFragments(analyzer, "content", content, 5);
|
| | | String [] fragments = highlighter.getBestFragments(analyzer, "content", content, 3);
|
| | | if (ArrayUtils.isEmpty(fragments)) {
|
| | | if (SearchObjectType.blob == result.type) {
|
| | | return "";
|