|
|
@@ -54,6 +54,7 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Map.Entry;
|
|
|
import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
import org.apache.lucene.document.Document;
|
|
|
import org.apache.lucene.index.Term;
|
|
|
import org.apache.lucene.sandbox.queries.DuplicateFilter;
|
|
|
@@ -1461,6 +1462,9 @@ public class SearchServiceImpl implements SearchService {
|
|
|
} finally {
|
|
|
releaseIndexSearcher(indexSearcher);
|
|
|
}
|
|
|
+ if (goods.size() > size) {
|
|
|
+ goods = goods.stream().limit(size).collect(Collectors.toSet());
|
|
|
+ }
|
|
|
return goods;
|
|
|
}
|
|
|
|
|
|
@@ -1490,7 +1494,10 @@ public class SearchServiceImpl implements SearchService {
|
|
|
new DistinctGroupCollector.CollectField(GOODS_BR_NAME_EN_UNTOKENIZED_FIELD, GOODS_BR_NAME_EN_UNTOKENIZED_FIELD)
|
|
|
};
|
|
|
DistinctGroupCollector collector = new DistinctGroupCollector(GOODS_BR_NAME_EN_UNTOKENIZED_FIELD, collectFields);
|
|
|
- booleanQuery.add(new TermQuery(new Term(GOODS_BR_NAME_EN_UNTOKENIZED_FIELD, keyword.toLowerCase())), Occur.MUST);
|
|
|
+ BooleanQuery nameQuery = new BooleanQuery();
|
|
|
+ nameQuery.add(new TermQuery(new Term(GOODS_BR_NAME_EN_UNTOKENIZED_FIELD, keyword.toLowerCase())), Occur.SHOULD);
|
|
|
+ nameQuery.add(new TermQuery(new Term(GOODS_BR_NAME_CN_UNTOKENIZED_FIELD, keyword.toLowerCase())), Occur.SHOULD);
|
|
|
+ booleanQuery.add(nameQuery, Occur.MUST);
|
|
|
indexSearcher.search(booleanQuery, collector);
|
|
|
goods.addAll(collector.getCollectValues());
|
|
|
|
|
|
@@ -1499,26 +1506,21 @@ public class SearchServiceImpl implements SearchService {
|
|
|
if (!CollectionUtils.isEmpty(storeTypes)) {
|
|
|
filter(storeTypes, SearchConstants.GOODS_ST_TYPE_FIELD, booleanQueryPre);
|
|
|
}
|
|
|
- booleanQueryPre.add(new PrefixQuery(new Term(GOODS_BR_NAME_CN_UNTOKENIZED_FIELD, keyword.toLowerCase())), Occur.MUST);
|
|
|
- booleanQueryPre.add(new PrefixQuery(new Term(GOODS_BR_NAME_EN_UNTOKENIZED_FIELD, keyword.toLowerCase())), Occur.MUST);
|
|
|
+ BooleanQuery namePreQuery = new BooleanQuery();
|
|
|
+ namePreQuery.add(new PrefixQuery(new Term(GOODS_BR_NAME_EN_UNTOKENIZED_FIELD, keyword.toLowerCase())), Occur.SHOULD);
|
|
|
+ namePreQuery.add(new PrefixQuery(new Term(GOODS_BR_NAME_CN_UNTOKENIZED_FIELD, keyword.toLowerCase())), Occur.SHOULD);
|
|
|
+ booleanQueryPre.add(namePreQuery, Occur.MUST);
|
|
|
logger.info(booleanQueryPre.toString());
|
|
|
indexSearcher.search(booleanQueryPre, collector);
|
|
|
goods.addAll(collector.getCollectValues());
|
|
|
-
|
|
|
-// BooleanQuery booleanQueryPre = new BooleanQuery();
|
|
|
-// if (!CollectionUtils.isEmpty(storeTypes)) {
|
|
|
-// filter(storeTypes, SearchConstants.GOODS_ST_TYPE_FIELD, booleanQueryPre);
|
|
|
-// }
|
|
|
-// booleanQueryPre.add(SearchUtils.getBooleanQuery(SearchConstants.GOODS_BR_NAME_CN_FIELD, keyword.toLowerCase()), Occur.SHOULD);
|
|
|
-// booleanQueryPre.add(SearchUtils.getBooleanQuery(SearchConstants.GOODS_BR_NAME_EN_FIELD, keyword.toLowerCase()), Occur.SHOULD);
|
|
|
-// logger.info(booleanQueryPre.toString());
|
|
|
-// indexSearcher.search(booleanQueryPre, collector);
|
|
|
-// goods.addAll(collector.getCollectValues());
|
|
|
} catch (IOException e) {
|
|
|
logger.error("", e);
|
|
|
} finally {
|
|
|
releaseIndexSearcher(indexSearcher);
|
|
|
}
|
|
|
+ if (goods.size() > size) {
|
|
|
+ goods = goods.stream().limit(size).collect(Collectors.toSet());
|
|
|
+ }
|
|
|
return goods;
|
|
|
}
|
|
|
|
|
|
@@ -1566,6 +1568,9 @@ public class SearchServiceImpl implements SearchService {
|
|
|
} finally {
|
|
|
releaseIndexSearcher(indexSearcher);
|
|
|
}
|
|
|
+ if (goods.size() > size) {
|
|
|
+ goods = goods.stream().limit(size).collect(Collectors.toSet());
|
|
|
+ }
|
|
|
return goods;
|
|
|
}
|
|
|
|