LuceneManager.java
Upload User: gdxydsw
Upload Date: 2019-01-29
Package Size: 16721k
Code Size: 4k
Category:

Java Develop

Development Platform:

Java

  1. /*
  2.  * Copyright (c) JForum Team
  3.  * All rights reserved.
  4.  * 
  5.  * Redistribution and use in source and binary forms, 
  6.  * with or without modification, are permitted provided 
  7.  * that the following conditions are met:
  8.  * 
  9.  * 1) Redistributions of source code must retain the above 
  10.  * copyright notice, this list of conditions and the 
  11.  * following  disclaimer.
  12.  * 2)  Redistributions in binary form must reproduce the 
  13.  * above copyright notice, this list of conditions and 
  14.  * the following disclaimer in the documentation and/or 
  15.  * other materials provided with the distribution.
  16.  * 3) Neither the name of "Rafael Steil" nor 
  17.  * the names of its contributors may be used to endorse 
  18.  * or promote products derived from this software without 
  19.  * specific prior written permission.
  20.  * 
  21.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT 
  22.  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
  23.  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
  24.  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
  25.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  26.  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 
  27.  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
  28.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
  29.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
  30.  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
  31.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
  32.  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
  33.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
  34.  * IN CONTRACT, STRICT LIABILITY, OR TORT 
  35.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
  36.  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
  37.  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
  38.  * 
  39.  * Created on 24/07/2007 12:23:05
  40.  * 
  41.  * The JForum Project
  42.  * http://www.jforum.net
  43.  */
  44. package net.jforum.search;
  45. import java.io.IOException;
  46. import net.jforum.entities.Post;
  47. import net.jforum.exceptions.ForumException;
  48. import net.jforum.util.preferences.ConfigKeys;
  49. import net.jforum.util.preferences.SystemGlobals;
  50. import org.apache.lucene.analysis.Analyzer;
  51. import org.apache.lucene.index.IndexReader;
  52. /**
  53.  * @author Rafael Steil
  54.  * @version $Id: LuceneManager.java,v 1.16 2007/09/09 22:53:35 rafaelsteil Exp $
  55.  */
  56. public class LuceneManager implements SearchManager
  57. {
  58. private LuceneSearch search;
  59. private LuceneSettings settings;
  60. private LuceneIndexer indexer;
  61. /**
  62.  * @see net.jforum.search.SearchManager#init()
  63.  */
  64. public void init()
  65. {
  66. try {
  67. Analyzer analyzer = (Analyzer)Class.forName(SystemGlobals.getValue(
  68. ConfigKeys.LUCENE_ANALYZER)).newInstance();
  69. this.settings = new LuceneSettings(analyzer);
  70. this.settings.useFSDirectory(SystemGlobals.getValue(ConfigKeys.LUCENE_INDEX_WRITE_PATH));
  71. this.removeLockFile();
  72. this.indexer = new LuceneIndexer(this.settings);
  73. this.search = new LuceneSearch(this.settings, 
  74. new LuceneContentCollector(this.settings));
  75. this.indexer.watchNewDocuDocumentAdded(this.search);
  76. SystemGlobals.setObjectValue(ConfigKeys.LUCENE_SETTINGS, this.settings);
  77. }
  78. catch (Exception e) {
  79. throw new ForumException(e);
  80. }
  81. }
  82. public LuceneSearch luceneSearch()
  83. {
  84. return this.search;
  85. }
  86. public LuceneIndexer luceneIndexer()
  87. {
  88. return this.indexer;
  89. }
  90. public void removeLockFile()
  91. {
  92. try {
  93. if (IndexReader.isLocked(this.settings.directory())) {
  94. IndexReader.unlock(this.settings.directory());
  95. }
  96. }
  97. catch (IOException e) {
  98. throw new ForumException(e);
  99. }
  100. }
  101. /**
  102.  * @see net.jforum.search.SearchManager#create(net.jforum.entities.Post)
  103.  */
  104. public void create(Post post)
  105. {
  106. this.indexer.create(post);
  107. }
  108. /**
  109.  * @see net.jforum.search.SearchManager#update(net.jforum.entities.Post)
  110.  */
  111. public void update(Post post)
  112. {
  113. this.indexer.update(post);
  114. }
  115. /**
  116.  * @see net.jforum.search.SearchManager#search(net.jforum.search.SearchArgs)
  117.  */
  118. public SearchResult search(SearchArgs args)
  119. {
  120. return this.search.search(args);
  121. }
  122. /**
  123.  * @see net.jforum.search.SearchManager#delete(net.jforum.entities.Post)
  124.  */
  125. public void delete(Post p)
  126. {
  127. this.indexer.delete(p);
  128. }
  129. }