| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.lucene.benchmark.byTask.feeds; |
| |
| import java.util.Properties; |
| import java.util.Random; |
| import org.apache.lucene.benchmark.byTask.utils.Config; |
| |
| /** |
| * Adds fields appropriate for sorting: country, random_string and sort_field (int). Supports the |
| * following parameters: |
| * |
| * <ul> |
| * <li><b>sort.rng</b> - defines the range for sort-by-int field (default <b>20000</b>). |
| * <li><b>rand.seed</b> - defines the seed to initialize Random with (default <b>13</b>). |
| * </ul> |
| */ |
| public class SortableSingleDocSource extends SingleDocSource { |
| |
| private static String[] COUNTRIES = |
| new String[] { |
| "European Union", |
| "United States", |
| "Japan", |
| "Germany", |
| "China (PRC)", |
| "United Kingdom", |
| "France", |
| "Italy", |
| "Spain", |
| "Canada", |
| "Brazil", |
| "Russia", |
| "India", |
| "South Korea", |
| "Australia", |
| "Mexico", |
| "Netherlands", |
| "Turkey", |
| "Sweden", |
| "Belgium", |
| "Indonesia", |
| "Switzerland", |
| "Poland", |
| "Norway", |
| "Republic of China", |
| "Saudi Arabia", |
| "Austria", |
| "Greece", |
| "Denmark", |
| "Iran", |
| "South Africa", |
| "Argentina", |
| "Ireland", |
| "Thailand", |
| "Finland", |
| "Venezuela", |
| "Portugal", |
| "Hong Kong", |
| "United Arab Emirates", |
| "Malaysia", |
| "Czech Republic", |
| "Colombia", |
| "Nigeria", |
| "Romania", |
| "Chile", |
| "Israel", |
| "Singapore", |
| "Philippines", |
| "Pakistan", |
| "Ukraine", |
| "Hungary", |
| "Algeria", |
| "New Zealand", |
| "Egypt", |
| "Kuwait", |
| "Peru", |
| "Kazakhstan", |
| "Slovakia", |
| "Morocco", |
| "Bangladesh", |
| "Vietnam", |
| "Qatar", |
| "Angola", |
| "Libya", |
| "Iraq", |
| "Croatia", |
| "Luxembourg", |
| "Sudan", |
| "Slovenia", |
| "Cuba", |
| "Belarus", |
| "Ecuador", |
| "Serbia", |
| "Oman", |
| "Bulgaria", |
| "Lithuania", |
| "Syria", |
| "Dominican Republic", |
| "Tunisia", |
| "Guatemala", |
| "Azerbaijan", |
| "Sri Lanka", |
| "Kenya", |
| "Latvia", |
| "Turkmenistan", |
| "Costa Rica", |
| "Lebanon", |
| "Uruguay", |
| "Uzbekistan", |
| "Yemen", |
| "Cyprus", |
| "Estonia", |
| "Trinidad and Tobago", |
| "Cameroon", |
| "El Salvador", |
| "Iceland", |
| "Panama", |
| "Bahrain", |
| "Ivory Coast", |
| "Ethiopia", |
| "Tanzania", |
| "Jordan", |
| "Ghana", |
| "Bosnia and Herzegovina", |
| "Macau", |
| "Burma", |
| "Bolivia", |
| "Brunei", |
| "Botswana", |
| "Honduras", |
| "Gabon", |
| "Uganda", |
| "Jamaica", |
| "Zambia", |
| "Senegal", |
| "Paraguay", |
| "Albania", |
| "Equatorial Guinea", |
| "Georgia", |
| "Democratic Republic of the Congo", |
| "Nepal", |
| "Afghanistan", |
| "Cambodia", |
| "Armenia", |
| "Republic of the Congo", |
| "Mozambique", |
| "Republic of Macedonia", |
| "Malta", |
| "Namibia", |
| "Madagascar", |
| "Chad", |
| "Burkina Faso", |
| "Mauritius", |
| "Mali", |
| "The Bahamas", |
| "Papua New Guinea", |
| "Nicaragua", |
| "Haiti", |
| "Benin", |
| "alestinian flag West Bank and Gaza", |
| "Jersey", |
| "Fiji", |
| "Guinea", |
| "Moldova", |
| "Niger", |
| "Laos", |
| "Mongolia", |
| "French Polynesia", |
| "Kyrgyzstan", |
| "Barbados", |
| "Tajikistan", |
| "Malawi", |
| "Liechtenstein", |
| "New Caledonia", |
| "Kosovo", |
| "Rwanda", |
| "Montenegro", |
| "Swaziland", |
| "Guam", |
| "Mauritania", |
| "Guernsey", |
| "Isle of Man", |
| "Togo", |
| "Somalia", |
| "Suriname", |
| "Aruba", |
| "North Korea", |
| "Zimbabwe", |
| "Central African Republic", |
| "Faroe Islands", |
| "Greenland", |
| "Sierra Leone", |
| "Lesotho", |
| "Cape Verde", |
| "Eritrea", |
| "Bhutan", |
| "Belize", |
| "Antigua and Barbuda", |
| "Gibraltar", |
| "Maldives", |
| "San Marino", |
| "Guyana", |
| "Burundi", |
| "Saint Lucia", |
| "Djibouti", |
| "British Virgin Islands", |
| "Liberia", |
| "Seychelles", |
| "The Gambia", |
| "Northern Mariana Islands", |
| "Grenada", |
| "Saint Vincent and the Grenadines", |
| "Saint Kitts and Nevis", |
| "East Timor", |
| "Vanuatu", |
| "Comoros", |
| "Samoa", |
| "Solomon Islands", |
| "Guinea-Bissau", |
| "American Samoa", |
| "Dominica", |
| "Micronesia", |
| "Tonga", |
| "Cook Islands", |
| "Palau", |
| "Marshall Islands", |
| "S�o Tom� and Pr�ncipe", |
| "Anguilla", |
| "Kiribati", |
| "Tuvalu", |
| "Niue" |
| }; |
| |
| private int sortRange; |
| private Random r; |
| |
| @Override |
| public DocData getNextDocData(DocData docData) throws NoMoreDataException { |
| docData = super.getNextDocData(docData); |
| Properties props = new Properties(); |
| |
| // random int |
| props.put("sort_field", Integer.toString(r.nextInt(sortRange))); |
| |
| // random string |
| int len = nextInt(2, 20); |
| char[] buffer = new char[len]; |
| for (int i = 0; i < len; i++) { |
| buffer[i] = (char) r.nextInt(0x80); |
| } |
| props.put("random_string", new String(buffer)); |
| |
| // random country |
| props.put("country", COUNTRIES[r.nextInt(COUNTRIES.length)]); |
| docData.setProps(props); |
| return docData; |
| } |
| |
| private int nextInt(int start, int end) { |
| return start + r.nextInt(end - start); |
| } |
| |
| @Override |
| public void setConfig(Config config) { |
| super.setConfig(config); |
| sortRange = config.get("sort.rng", 20000); |
| r = new Random(config.get("rand.seed", 13)); |
| } |
| } |