|
|
@@ -70,13 +70,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
List<Long> ids = new ArrayList<Long>();
|
|
|
try {
|
|
|
@@ -106,13 +100,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
List<Map<String, Object>> kinds = new ArrayList<Map<String, Object>>();
|
|
|
try {
|
|
|
@@ -143,13 +131,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
List<Long> ids = new ArrayList<Long>();
|
|
|
try {
|
|
|
@@ -183,13 +165,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
List<Map<String, Object>> brands = new ArrayList<Map<String, Object>>();
|
|
|
try {
|
|
|
@@ -219,14 +195,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Object> getComponentIds(String keyword, PageParams page) {
|
|
|
- String message = "";
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
if (page == null) {
|
|
|
page = new PageParams();
|
|
|
@@ -316,13 +285,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
Set<Long> kindIds = new HashSet<Long>();
|
|
|
try {
|
|
|
@@ -368,15 +331,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
return kinds;
|
|
|
}
|
|
|
|
|
|
- String message = "";
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
-
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
BooleanQuery booleanQuery = new BooleanQuery();
|
|
|
for (Long kindId : kindIds) {
|
|
|
booleanQuery.add(new TermQuery(new Term(SearchConstants.KIND_ID_FIELD, String.valueOf(kindId))),
|
|
|
@@ -409,13 +364,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
Set<Long> brandIds = new HashSet<Long>();
|
|
|
try {
|
|
|
@@ -461,15 +410,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
return brands;
|
|
|
}
|
|
|
|
|
|
- String message = "";
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
-
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
BooleanQuery booleanQuery = new BooleanQuery();
|
|
|
for (Long brandId : brandIds) {
|
|
|
booleanQuery.add(new TermQuery(new Term(SearchConstants.BRAND_ID_FIELD, String.valueOf(brandId))),
|
|
|
@@ -540,13 +481,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
List<Map<String, Object>> components = new ArrayList<>();
|
|
|
try {
|
|
|
@@ -583,13 +518,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
List<Map<String, Object>> brands = new ArrayList<Map<String, Object>>();
|
|
|
// 品牌名称带有空格,并且中英文名并无一定顺序,因此对nameCn、nameEn均要搜索
|
|
|
@@ -659,13 +588,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
List<Map<String, Object>> kinds = new ArrayList<>();
|
|
|
try {
|
|
|
@@ -710,13 +633,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
String propertyIdString = String.valueOf(propertyId);
|
|
|
if (!propertyIdString.startsWith(SearchConstants.COMPONENT_PROPERTY_PREFIX)) {
|
|
|
@@ -836,13 +753,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher searcher = searcherManager.get();
|
|
|
- if (searcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
List<String> result = new ArrayList<>();
|
|
|
try {
|
|
|
@@ -896,7 +807,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
* 判断搜索词是否为无效的(比如只包含特殊字符,不含有任何字母、数字、汉字等有意义的字符)
|
|
|
*
|
|
|
* @param keyword
|
|
|
- * @return
|
|
|
+ * @return 搜索词是否无效
|
|
|
*/
|
|
|
private static boolean isKeywordInvalid(String keyword) {
|
|
|
if (!StringUtils.isEmpty(keyword)) {
|
|
|
@@ -907,6 +818,20 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取IndexSearcher对象,若为空,抛出异常
|
|
|
+ *
|
|
|
+ * @return IndexSearcher对象
|
|
|
+ */
|
|
|
+ private IndexSearcher getIndexSearcher() {
|
|
|
+ searcherManager.maybeReopen();
|
|
|
+ IndexSearcher searcher = searcherManager.get();
|
|
|
+ if (searcher == null) {
|
|
|
+ throw new SystemError("获取索引文件失败");
|
|
|
+ }
|
|
|
+ return searcher;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 删除lists内startIndex(含)后的元素
|
|
|
*
|
|
|
@@ -931,25 +856,19 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher indexSearcher = searcherManager.get();
|
|
|
- if (indexSearcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
KindSimpleInfo kind = null;
|
|
|
try {
|
|
|
TermQuery query = new TermQuery(new Term(SearchConstants.KIND_ID_FIELD, String.valueOf(kindId)));
|
|
|
- TopDocs topDocs = indexSearcher.search(query, 1);
|
|
|
+ TopDocs topDocs = searcher.search(query, 1);
|
|
|
int totalHits = topDocs.totalHits;
|
|
|
if (totalHits > 1) {
|
|
|
message = "索引中存在不止一个类目:kindId=" + kindId;
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
} else if (totalHits == 1) {
|
|
|
- Document document = indexSearcher.doc(topDocs.scoreDocs[0].doc);
|
|
|
+ Document document = searcher.doc(topDocs.scoreDocs[0].doc);
|
|
|
kind = new KindSimpleInfo();
|
|
|
kind.setId(kindId);
|
|
|
kind.setNameCn(document.get(SearchConstants.KIND_NAMECN_FIELD));
|
|
|
@@ -960,7 +879,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
- searcherManager.release(indexSearcher);
|
|
|
+ searcherManager.release(searcher);
|
|
|
}
|
|
|
return kind;
|
|
|
}
|
|
|
@@ -973,25 +892,19 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher indexSearcher = searcherManager.get();
|
|
|
- if (indexSearcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
BrandSimpleInfo brand = null;
|
|
|
try {
|
|
|
TermQuery query = new TermQuery(new Term(SearchConstants.BRAND_ID_FIELD, String.valueOf(brandId)));
|
|
|
- TopDocs topDocs = indexSearcher.search(query, 1);
|
|
|
+ TopDocs topDocs = searcher.search(query, 1);
|
|
|
int totalHits = topDocs.totalHits;
|
|
|
if (totalHits > 1) {
|
|
|
message = "索引中存在不止一个品牌:brandId=" + brandId;
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
} else if (totalHits == 1) {
|
|
|
- Document document = indexSearcher.doc(topDocs.scoreDocs[0].doc);
|
|
|
+ Document document = searcher.doc(topDocs.scoreDocs[0].doc);
|
|
|
brand = new BrandSimpleInfo();
|
|
|
brand.setId(brandId);
|
|
|
brand.setNameCn(document.get(SearchConstants.BRAND_NAMECN_FIELD));
|
|
|
@@ -1002,7 +915,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
- searcherManager.release(indexSearcher);
|
|
|
+ searcherManager.release(searcher);
|
|
|
}
|
|
|
return brand;
|
|
|
}
|
|
|
@@ -1015,25 +928,19 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
}
|
|
|
- searcherManager.maybeReopen();
|
|
|
- IndexSearcher indexSearcher = searcherManager.get();
|
|
|
- if (indexSearcher == null) {
|
|
|
- message = "获取索引文件失败";
|
|
|
- logger.error(message);
|
|
|
- throw new SystemError(message);
|
|
|
- }
|
|
|
+ IndexSearcher searcher = getIndexSearcher();
|
|
|
|
|
|
ComponentSimpleInfo component = null;
|
|
|
try {
|
|
|
TermQuery query = new TermQuery(new Term(SearchConstants.COMPONENT_ID_FIELD, String.valueOf(componentId)));
|
|
|
- TopDocs topDocs = indexSearcher.search(query, 1);
|
|
|
+ TopDocs topDocs = searcher.search(query, 1);
|
|
|
int totalHits = topDocs.totalHits;
|
|
|
if (totalHits > 1) {
|
|
|
message = "索引中存在不止一个器件:componentId=" + componentId;
|
|
|
logger.error(message);
|
|
|
throw new SystemError(message);
|
|
|
} else if (totalHits == 1) {
|
|
|
- Document document = indexSearcher.doc(topDocs.scoreDocs[0].doc);
|
|
|
+ Document document = searcher.doc(topDocs.scoreDocs[0].doc);
|
|
|
component = new ComponentSimpleInfo();
|
|
|
component.setId(componentId);
|
|
|
component.setCode(document.get(SearchConstants.COMPONENT_CODE_FIELD));
|
|
|
@@ -1045,7 +952,7 @@ public class SearchServiceImpl implements SearchService, InnerSearchService {
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
- searcherManager.release(indexSearcher);
|
|
|
+ searcherManager.release(searcher);
|
|
|
}
|
|
|
return component;
|
|
|
}
|