|
|
@@ -38,6 +38,7 @@ import com.uas.search.console.dao.PurchaseDetailSimpleInfoDao;
|
|
|
import com.uas.search.console.dao.PurchaseInvoiceDetailSimpleInfoDao;
|
|
|
import com.uas.search.console.dao.PurchaseInvoiceSimpleInfoDao;
|
|
|
import com.uas.search.console.dao.PurchaseSimpleInfoDao;
|
|
|
+import com.uas.search.console.jms.AQListener;
|
|
|
import com.uas.search.console.model.BrandSimpleInfo;
|
|
|
import com.uas.search.console.model.ComponentSimpleInfo;
|
|
|
import com.uas.search.console.model.KindSimpleInfo;
|
|
|
@@ -105,6 +106,14 @@ public class IndexServiceImpl implements IndexService {
|
|
|
|
|
|
private FSDirectory directory;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private AQListener aqListener;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 是否正在创建索引
|
|
|
+ */
|
|
|
+ private boolean creatingIndex = false;
|
|
|
+
|
|
|
private static final int PAGE_SIZE = 1000;
|
|
|
|
|
|
private Logger logger = Logger.getLogger(IndexServiceImpl.class);
|
|
|
@@ -120,22 +129,29 @@ public class IndexServiceImpl implements IndexService {
|
|
|
|
|
|
@Override
|
|
|
public Long createIndexs() {
|
|
|
- try {
|
|
|
- if (IndexWriter.isLocked(directory)) {
|
|
|
- throw new SearchException("索引文件被锁定");
|
|
|
- }
|
|
|
- } catch (IOException e1) {
|
|
|
- e1.printStackTrace();
|
|
|
+ if (creatingIndex) {
|
|
|
+ throw new SearchException("已存在线程在创建索引,不可重复请求");
|
|
|
+ }
|
|
|
+ creatingIndex = true;
|
|
|
+ // 如果索引实时更新处于开启状态,需要暂时关闭(以免两者同时操作索引出现问题)
|
|
|
+ if (aqListener.isRunning()) {
|
|
|
+ logger.info("索引实时更新服务正在运行,尝试关闭索引实时更新服务...");
|
|
|
+ aqListener.stop();
|
|
|
}
|
|
|
|
|
|
// 清除旧索引
|
|
|
- File file = new File(SearchConstants.INDEX_DIR);
|
|
|
- if (file.isDirectory()) {
|
|
|
- clearDir(file);
|
|
|
- }
|
|
|
+ // File file = new File(SearchConstants.INDEX_DIR);
|
|
|
+ // if (file.isDirectory()) {
|
|
|
+ // clearDir(file);
|
|
|
+ // }
|
|
|
|
|
|
try {
|
|
|
indexWriter = indexWriterManager.get();
|
|
|
+ // 删除旧索引
|
|
|
+ logger.info("正在清理旧索引...");
|
|
|
+ indexWriter.deleteAll();
|
|
|
+ indexWriter.commit();
|
|
|
+ logger.info("旧索引清理完毕");
|
|
|
Long startTime = new Date().getTime();
|
|
|
|
|
|
Long kindSize = createKindIndexs();
|
|
|
@@ -193,6 +209,8 @@ public class IndexServiceImpl implements IndexService {
|
|
|
} catch (InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
+ aqListener.start();
|
|
|
+ creatingIndex = false;
|
|
|
indexWriterManager.release();
|
|
|
}
|
|
|
|
|
|
@@ -333,6 +351,7 @@ public class IndexServiceImpl implements IndexService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ // TODO delete
|
|
|
public Long createOrderAndPurchaseIndexes() {
|
|
|
try {
|
|
|
indexWriter = indexWriterManager.get();
|