int[] records = job.getTargetSearchIDs();
topology.applyMatcherSearchWeight(records);
int[] mIDs = topology.getMatcherIds();
SystemResponse[] sysResponse = new SystemResponse[mIDs.length];
Map<Integer, SearchCommand> mrCmdsMap = new HashMap<Integer, SearchCommand>();
Run Code Online (Sandbox Code Playgroud)
mID 的长度为 250,记录的长度为 750 万个整数。我希望这个循环在配备 8 核 Intel Xeon X5355 处理器、64 位 Linux (Ubuntu) 和 32 位 Java 的服务器上运行不到 3 秒。
for (long mID : mIDs) {
List<Integer> recIDsToMatch = new LinkedList<Integer>();
Matcher matcher = topology.getMatcherById(mID);
for (long record : records) {
if (matcher.getRange().isInRange(record))
recIDsToMatch.add(record);
}
if (recIDsToMatch.size() > 0) {
SearchCommand command = new SearchCommand(job.getMatchParameters(),
job.getRequestType(),
job.getId(),
job.getMatchParameters().getEngineProperties(), …Run Code Online (Sandbox Code Playgroud)