|
|
@@ -12,10 +12,7 @@ import com.uas.search.grouping.GoodsGroupCollector;
|
|
|
import com.uas.search.model.*;
|
|
|
import com.uas.search.service.SearchService;
|
|
|
import com.uas.search.sort.StringFieldComparatorSource;
|
|
|
-import com.uas.search.util.CollectionUtils;
|
|
|
-import com.uas.search.util.DocumentToObjectUtils;
|
|
|
-import com.uas.search.util.SearchUtils;
|
|
|
-import com.uas.search.util.StringUtils;
|
|
|
+import com.uas.search.util.*;
|
|
|
import org.apache.lucene.document.Document;
|
|
|
import org.apache.lucene.index.Term;
|
|
|
import org.apache.lucene.search.*;
|
|
|
@@ -885,9 +882,9 @@ public class SearchServiceImpl implements SearchService {
|
|
|
for (ScoreDoc scoreDoc : scoreDocs) {
|
|
|
Document document = indexSearcher.doc(scoreDoc.doc, fieldsToLoad);
|
|
|
String cmpId = document.get(SearchConstants.GOODS_CMP_ID_FIELD);
|
|
|
- cmpIds.add(StringUtils.isEmpty(cmpId) ? null : Long.valueOf(cmpId));
|
|
|
+ cmpIds.add(StringUtils.isEmpty(cmpId) || cmpId.equals(ObjectToDocumentUtils.NULL_VALUE) ? null : Long.valueOf(cmpId));
|
|
|
String goId = document.get(SearchConstants.GOODS_GO_ID_FIELD);
|
|
|
- goIds.add(StringUtils.isEmpty(goId) ? null : Long.valueOf(goId));
|
|
|
+ goIds.add(StringUtils.isEmpty(goId) || goId.equals(ObjectToDocumentUtils.NULL_VALUE) ? null : Long.valueOf(goId));
|
|
|
}
|
|
|
map.put("componentIds", cmpIds);
|
|
|
map.put("goodsIds", goIds);
|
|
|
@@ -944,14 +941,14 @@ public class SearchServiceImpl implements SearchService {
|
|
|
// 如果未明确指定状态,则使用默认状态分情况进行过滤(结果中包括没有批次的器件)
|
|
|
status = Arrays.asList(TradeGoods.VALID_STATUS);
|
|
|
// 批次 id 不为空时,对状态过滤
|
|
|
- Query goIdNotNullQuery = SearchUtils.getNotNullQuery(SearchConstants.GOODS_GO_ID_FIELD);
|
|
|
+ Query goNullQuery = SearchUtils.getNullQuery(SearchConstants.GOODS_GO_ID_FIELD);
|
|
|
BooleanQuery q1 = new BooleanQuery();
|
|
|
- q1.add(goIdNotNullQuery, Occur.MUST);
|
|
|
+ q1.add(goNullQuery, Occur.MUST_NOT);
|
|
|
filter(status, SearchConstants.GOODS_GO_STATUS_FIELD, q1);
|
|
|
// 或者批次 id 为空(此时是器件)
|
|
|
BooleanQuery q2 = new BooleanQuery();
|
|
|
- q2.add(SearchUtils.getNotNullQuery(SearchConstants.GOODS_CMP_ID_FIELD), Occur.MUST);
|
|
|
- q2.add(goIdNotNullQuery, Occur.MUST_NOT);
|
|
|
+ q2.add(SearchUtils.getNullQuery(SearchConstants.GOODS_CMP_ID_FIELD), Occur.MUST_NOT);
|
|
|
+ q2.add(goNullQuery, Occur.MUST);
|
|
|
|
|
|
BooleanQuery booleanQuery = new BooleanQuery();
|
|
|
booleanQuery.add(q1, Occur.SHOULD);
|