|
|
@@ -15,6 +15,7 @@ import org.apache.lucene.document.Document;
|
|
|
import org.apache.lucene.index.IndexWriter;
|
|
|
import org.apache.lucene.index.Term;
|
|
|
import org.apache.lucene.store.FSDirectory;
|
|
|
+import org.springframework.beans.factory.InitializingBean;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -23,6 +24,7 @@ import org.springframework.util.StringUtils;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.uas.platform.core.model.PageInfo;
|
|
|
import com.uas.platform.core.model.PageParams;
|
|
|
+import com.uas.search.console.LuceneProperties;
|
|
|
import com.uas.search.console.dao.BrandSimpleInfoDao;
|
|
|
import com.uas.search.console.dao.ComponentSimpleInfoDao;
|
|
|
import com.uas.search.console.dao.KindSimpleInfoDao;
|
|
|
@@ -52,7 +54,7 @@ import com.uas.search.exception.SearchException;
|
|
|
* @since 2016年8月5日 下午2:23:22
|
|
|
*/
|
|
|
@Service
|
|
|
-public class IndexServiceImpl implements IndexService {
|
|
|
+public class IndexServiceImpl implements IndexService, InitializingBean {
|
|
|
|
|
|
@Autowired
|
|
|
private KindSimpleInfoDao kindDao;
|
|
|
@@ -84,6 +86,9 @@ public class IndexServiceImpl implements IndexService {
|
|
|
@Autowired
|
|
|
private AQListener aqListener;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private LuceneProperties luceneProperties;
|
|
|
+
|
|
|
/**
|
|
|
* 是否正在创建索引
|
|
|
*/
|
|
|
@@ -93,9 +98,10 @@ public class IndexServiceImpl implements IndexService {
|
|
|
|
|
|
private Logger logger = Logger.getLogger(IndexServiceImpl.class);
|
|
|
|
|
|
- public IndexServiceImpl() {
|
|
|
+ @Override
|
|
|
+ public void afterPropertiesSet() throws Exception {
|
|
|
try {
|
|
|
- directory = FSDirectory.open(Paths.get(SearchConstants.INDEX_DIR));
|
|
|
+ directory = FSDirectory.open(Paths.get(luceneProperties.getIndexesDir()));
|
|
|
indexWriterManager = new IndexWriterManager(directory);
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
@@ -194,7 +200,7 @@ public class IndexServiceImpl implements IndexService {
|
|
|
Long size = 0L;
|
|
|
try {
|
|
|
// 从本地路径读取器件数据
|
|
|
- File[] files = new File(SearchConstants.COMPONENT_WITH_PROPERTY_DIR).listFiles();
|
|
|
+ File[] files = new File(luceneProperties.getComponentsDir()).listFiles();
|
|
|
if (files == null || files.length == 0) {
|
|
|
logger.info("创建器件索引失败,原因:器件数据文件不存在!");
|
|
|
return 0L;
|
|
|
@@ -212,8 +218,7 @@ public class IndexServiceImpl implements IndexService {
|
|
|
size++;
|
|
|
// 每创建10000条,打印一次进度
|
|
|
if (size % 10000 == 0) {
|
|
|
- logger.info(String.format("Component indexed...................%.2f%%",
|
|
|
- size * 100.0 / totalSize));
|
|
|
+ logger.info(String.format("Component indexed...................%.2f%%", size * 100.0 / totalSize));
|
|
|
}
|
|
|
indexWriter.addDocument(document);
|
|
|
}
|
|
|
@@ -369,29 +374,28 @@ public class IndexServiceImpl implements IndexService {
|
|
|
try {
|
|
|
indexWriter = indexWriterManager.get();
|
|
|
if (obj instanceof KindSimpleInfo) {
|
|
|
- indexWriter.updateDocument(
|
|
|
- new Term(SearchConstants.KIND_ID_FIELD, String.valueOf(((KindSimpleInfo) obj).getId())),
|
|
|
+ indexWriter.updateDocument(new Term(SearchConstants.KIND_ID_FIELD, String.valueOf(((KindSimpleInfo) obj).getId())),
|
|
|
document);
|
|
|
} else if (obj instanceof BrandSimpleInfo) {
|
|
|
- indexWriter.updateDocument(
|
|
|
- new Term(SearchConstants.BRAND_ID_FIELD, String.valueOf(((BrandSimpleInfo) obj).getId())),
|
|
|
+ indexWriter.updateDocument(new Term(SearchConstants.BRAND_ID_FIELD, String.valueOf(((BrandSimpleInfo) obj).getId())),
|
|
|
document);
|
|
|
} else if (obj instanceof ComponentSimpleInfo) {
|
|
|
- indexWriter.updateDocument(new Term(SearchConstants.COMPONENT_ID_FIELD,
|
|
|
- String.valueOf(((ComponentSimpleInfo) obj).getId())), document);
|
|
|
- } else if (obj instanceof OrderSimpleInfo) {
|
|
|
indexWriter.updateDocument(
|
|
|
- new Term(SearchConstants.ORDER_ID_FIELD, String.valueOf(((OrderSimpleInfo) obj).getId())),
|
|
|
+ new Term(SearchConstants.COMPONENT_ID_FIELD, String.valueOf(((ComponentSimpleInfo) obj).getId())), document);
|
|
|
+ } else if (obj instanceof OrderSimpleInfo) {
|
|
|
+ indexWriter.updateDocument(new Term(SearchConstants.ORDER_ID_FIELD, String.valueOf(((OrderSimpleInfo) obj).getId())),
|
|
|
document);
|
|
|
} else if (obj instanceof OrderInvoiceSimpleInfo) {
|
|
|
- indexWriter.updateDocument(new Term(SearchConstants.ORDER_INVOICE_ID_FIELD,
|
|
|
- String.valueOf(((OrderInvoiceSimpleInfo) obj).getId())), document);
|
|
|
+ indexWriter.updateDocument(
|
|
|
+ new Term(SearchConstants.ORDER_INVOICE_ID_FIELD, String.valueOf(((OrderInvoiceSimpleInfo) obj).getId())),
|
|
|
+ document);
|
|
|
} else if (obj instanceof PurchaseSimpleInfo) {
|
|
|
- indexWriter.updateDocument(new Term(SearchConstants.PURCHASE_ID_FIELD,
|
|
|
- String.valueOf(((PurchaseSimpleInfo) obj).getId())), document);
|
|
|
+ indexWriter.updateDocument(
|
|
|
+ new Term(SearchConstants.PURCHASE_ID_FIELD, String.valueOf(((PurchaseSimpleInfo) obj).getId())), document);
|
|
|
} else if (obj instanceof PurchaseInvoiceSimpleInfo) {
|
|
|
- indexWriter.updateDocument(new Term(SearchConstants.PURCHASE_INVOICE_ID_FIELD,
|
|
|
- String.valueOf(((PurchaseInvoiceSimpleInfo) obj).getId())), document);
|
|
|
+ indexWriter.updateDocument(
|
|
|
+ new Term(SearchConstants.PURCHASE_INVOICE_ID_FIELD, String.valueOf(((PurchaseInvoiceSimpleInfo) obj).getId())),
|
|
|
+ document);
|
|
|
} else {
|
|
|
logger.error("Message parsing failed!");
|
|
|
}
|
|
|
@@ -415,26 +419,23 @@ public class IndexServiceImpl implements IndexService {
|
|
|
try {
|
|
|
indexWriter = indexWriterManager.get();
|
|
|
if (obj instanceof KindSimpleInfo) {
|
|
|
- indexWriter.deleteDocuments(
|
|
|
- new Term(SearchConstants.KIND_ID_FIELD, String.valueOf(((KindSimpleInfo) obj).getId())));
|
|
|
+ indexWriter.deleteDocuments(new Term(SearchConstants.KIND_ID_FIELD, String.valueOf(((KindSimpleInfo) obj).getId())));
|
|
|
} else if (obj instanceof BrandSimpleInfo) {
|
|
|
- indexWriter.deleteDocuments(
|
|
|
- new Term(SearchConstants.BRAND_ID_FIELD, String.valueOf(((BrandSimpleInfo) obj).getId())));
|
|
|
+ indexWriter.deleteDocuments(new Term(SearchConstants.BRAND_ID_FIELD, String.valueOf(((BrandSimpleInfo) obj).getId())));
|
|
|
} else if (obj instanceof ComponentSimpleInfo) {
|
|
|
indexWriter.deleteDocuments(new Term(SearchConstants.COMPONENT_ID_FIELD,
|
|
|
String.valueOf(((ComponentSimpleInfo) obj).getId())));
|
|
|
} else if (obj instanceof OrderSimpleInfo) {
|
|
|
- indexWriter.deleteDocuments(
|
|
|
- new Term(SearchConstants.ORDER_ID_FIELD, String.valueOf(((OrderSimpleInfo) obj).getId())));
|
|
|
+ indexWriter.deleteDocuments(new Term(SearchConstants.ORDER_ID_FIELD, String.valueOf(((OrderSimpleInfo) obj).getId())));
|
|
|
} else if (obj instanceof OrderInvoiceSimpleInfo) {
|
|
|
- indexWriter.deleteDocuments(new Term(SearchConstants.ORDER_INVOICE_ID_FIELD,
|
|
|
- String.valueOf(((OrderInvoiceSimpleInfo) obj).getId())));
|
|
|
+ indexWriter.deleteDocuments(new Term(SearchConstants.ORDER_INVOICE_ID_FIELD, String.valueOf(((OrderInvoiceSimpleInfo) obj)
|
|
|
+ .getId())));
|
|
|
} else if (obj instanceof PurchaseSimpleInfo) {
|
|
|
- indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_ID_FIELD,
|
|
|
- String.valueOf(((PurchaseSimpleInfo) obj).getId())));
|
|
|
+ indexWriter
|
|
|
+ .deleteDocuments(new Term(SearchConstants.PURCHASE_ID_FIELD, String.valueOf(((PurchaseSimpleInfo) obj).getId())));
|
|
|
} else if (obj instanceof PurchaseInvoiceSimpleInfo) {
|
|
|
- indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_INVOICE_ID_FIELD,
|
|
|
- String.valueOf(((PurchaseInvoiceSimpleInfo) obj).getId())));
|
|
|
+ indexWriter.deleteDocuments(new Term(SearchConstants.PURCHASE_INVOICE_ID_FIELD, String
|
|
|
+ .valueOf(((PurchaseInvoiceSimpleInfo) obj).getId())));
|
|
|
} else {
|
|
|
logger.error("Message parsing failed!");
|
|
|
}
|