package com.limegroup.gnutella.settings; /** * Settings for searches. */ public final class SearchSettings extends LimeProps { private SearchSettings() {} /** * Constant for the characters that are banned from search * strings. */ private static final char[] BAD_CHARS = { '_', '#', '!', '|', '?', '<', '>', '^', '(', ')', ':', ';', '/', '\\', '[', ']', '\t', '\n', '\r', '\f', // these cannot be last or first 'cause they're trimmed '{', '}', /* CHARACTERS THAT TURN AFTER NORMALIZATION TO BAD CHARS */ // Characters that turn into ';' '\u037E', // GREEK QUESTION MARK '\uFE54', // SMALL SEMICOLON '\uFF1B', // FULLWIDTH SEMICOLON // Characters that turn into '!' '\u203C', // DOUBLE EXCLAMATION MARK '\u2048', // QUESTION EXCLAMATION MARK '\u2049', // EXCLAMATION QUESTION MARK '\uFE57', // SMALL EXCLAMATION MARK '\uFF01', // FULLWIDTH EXCLAMATION MARK // Characters that turn into '?' '\u2047', // DOUBLE QUESTION MARK // '\u2048', // QUESTION EXCLAMATION MARK (see '!') // '\u2049', // EXCLAMATION QUESTION MARK (see '!') '\uFE56', // SMALL QUESTION MARK '\uFF1F', // FULLWIDTH QUESTION MARK // Characters that turn into '(' '\u207D', // SUPERSCRIPT LEFT PARENTHESIS '\u208D', // SUBSCRIPT LEFT PARENTHESIS '\u2474', // PARENTHESIZED DIGIT ONE '\u2475', // PARENTHESIZED DIGIT TWO '\u2476', // PARENTHESIZED DIGIT THREE '\u2477', // PARENTHESIZED DIGIT FOUR '\u2478', // PARENTHESIZED DIGIT FIVE '\u2479', // PARENTHESIZED DIGIT SIX '\u247A', // PARENTHESIZED DIGIT SEVEN '\u247B', // PARENTHESIZED DIGIT EIGHT '\u247C', // PARENTHESIZED DIGIT NINE '\u247D', // PARENTHESIZED NUMBER TEN '\u247E', // PARENTHESIZED NUMBER ELEVEN '\u247F', // PARENTHESIZED NUMBER TWELVE '\u2480', // PARENTHESIZED NUMBER THIRTEEN '\u2481', // PARENTHESIZED NUMBER FOURTEEN '\u2482', // PARENTHESIZED NUMBER FIFTEEN '\u2483', // PARENTHESIZED NUMBER SIXTEEN '\u2484', // PARENTHESIZED NUMBER SEVENTEEN '\u2485', // PARENTHESIZED NUMBER EIGHTEEN '\u2486', // PARENTHESIZED NUMBER NINETEEN '\u2487', // PARENTHESIZED NUMBER TWENTY '\u249C', // PARENTHESIZED LATIN SMALL LETTER A '\u249D', // PARENTHESIZED LATIN SMALL LETTER B '\u249E', // PARENTHESIZED LATIN SMALL LETTER C '\u249F', // PARENTHESIZED LATIN SMALL LETTER D '\u24A0', // PARENTHESIZED LATIN SMALL LETTER E '\u24A1', // PARENTHESIZED LATIN SMALL LETTER F '\u24A2', // PARENTHESIZED LATIN SMALL LETTER G '\u24A3', // PARENTHESIZED LATIN SMALL LETTER H '\u24A4', // PARENTHESIZED LATIN SMALL LETTER I '\u24A5', // PARENTHESIZED LATIN SMALL LETTER J '\u24A6', // PARENTHESIZED LATIN SMALL LETTER K '\u24A7', // PARENTHESIZED LATIN SMALL LETTER L '\u24A8', // PARENTHESIZED LATIN SMALL LETTER M '\u24A9', // PARENTHESIZED LATIN SMALL LETTER N '\u24AA', // PARENTHESIZED LATIN SMALL LETTER O '\u24AB', // PARENTHESIZED LATIN SMALL LETTER P '\u24AC', // PARENTHESIZED LATIN SMALL LETTER Q '\u24AD', // PARENTHESIZED LATIN SMALL LETTER R '\u24AE', // PARENTHESIZED LATIN SMALL LETTER S '\u24AF', // PARENTHESIZED LATIN SMALL LETTER T '\u24B0', // PARENTHESIZED LATIN SMALL LETTER U '\u24B1', // PARENTHESIZED LATIN SMALL LETTER V '\u24B2', // PARENTHESIZED LATIN SMALL LETTER W '\u24B3', // PARENTHESIZED LATIN SMALL LETTER X '\u24B4', // PARENTHESIZED LATIN SMALL LETTER Y '\u24B5', // PARENTHESIZED LATIN SMALL LETTER Z '\u3200', // PARENTHESIZED HANGUL KIYEOK '\u3201', // PARENTHESIZED HANGUL NIEUN '\u3202', // PARENTHESIZED HANGUL TIKEUT '\u3203', // PARENTHESIZED HANGUL RIEUL '\u3204', // PARENTHESIZED HANGUL MIEUM '\u3205', // PARENTHESIZED HANGUL PIEUP '\u3206', // PARENTHESIZED HANGUL SIOS '\u3207', // PARENTHESIZED HANGUL IEUNG '\u3208', // PARENTHESIZED HANGUL CIEUC '\u3209', // PARENTHESIZED HANGUL CHIEUCH '\u320A', // PARENTHESIZED HANGUL KHIEUKH '\u320B', // PARENTHESIZED HANGUL THIEUTH '\u320C', // PARENTHESIZED HANGUL PHIEUPH '\u320D', // PARENTHESIZED HANGUL HIEUH '\u320E', // PARENTHESIZED HANGUL KIYEOK A '\u320F', // PARENTHESIZED HANGUL NIEUN A '\u3210', // PARENTHESIZED HANGUL TIKEUT A '\u3211', // PARENTHESIZED HANGUL RIEUL A '\u3212', // PARENTHESIZED HANGUL MIEUM A '\u3213', // PARENTHESIZED HANGUL PIEUP A '\u3214', // PARENTHESIZED HANGUL SIOS A '\u3215', // PARENTHESIZED HANGUL IEUNG A '\u3216', // PARENTHESIZED HANGUL CIEUC A '\u3217', // PARENTHESIZED HANGUL CHIEUCH A '\u3218', // PARENTHESIZED HANGUL KHIEUKH A '\u3219', // PARENTHESIZED HANGUL THIEUTH A '\u321A', // PARENTHESIZED HANGUL PHIEUPH A '\u321B', // PARENTHESIZED HANGUL HIEUH A '\u321C', // PARENTHESIZED HANGUL CIEUC U '\u3220', // PARENTHESIZED IDEOGRAPH ONE '\u3221', // PARENTHESIZED IDEOGRAPH TWO '\u3222', // PARENTHESIZED IDEOGRAPH THREE '\u3223', // PARENTHESIZED IDEOGRAPH FOUR '\u3224', // PARENTHESIZED IDEOGRAPH FIVE '\u3225', // PARENTHESIZED IDEOGRAPH SIX '\u3226', // PARENTHESIZED IDEOGRAPH SEVEN '\u3227', // PARENTHESIZED IDEOGRAPH EIGHT '\u3228', // PARENTHESIZED IDEOGRAPH NINE '\u3229', // PARENTHESIZED IDEOGRAPH TEN '\u322A', // PARENTHESIZED IDEOGRAPH MOON '\u322B', // PARENTHESIZED IDEOGRAPH FIRE '\u322C', // PARENTHESIZED IDEOGRAPH WATER '\u322D', // PARENTHESIZED IDEOGRAPH WOOD '\u322E', // PARENTHESIZED IDEOGRAPH METAL '\u322F', // PARENTHESIZED IDEOGRAPH EARTH '\u3230', // PARENTHESIZED IDEOGRAPH SUN '\u3231', // PARENTHESIZED IDEOGRAPH STOCK '\u3232', // PARENTHESIZED IDEOGRAPH HAVE '\u3233', // PARENTHESIZED IDEOGRAPH SOCIETY '\u3234', // PARENTHESIZED IDEOGRAPH NAME '\u3235', // PARENTHESIZED IDEOGRAPH SPECIAL '\u3236', // PARENTHESIZED IDEOGRAPH FINANCIAL '\u3237', // PARENTHESIZED IDEOGRAPH CONGRATULATION '\u3238', // PARENTHESIZED IDEOGRAPH LABOR '\u3239', // PARENTHESIZED IDEOGRAPH REPRESENT '\u323A', // PARENTHESIZED IDEOGRAPH CALL '\u323B', // PARENTHESIZED IDEOGRAPH STUDY '\u323C', // PARENTHESIZED IDEOGRAPH SUPERVISE '\u323D', // PARENTHESIZED IDEOGRAPH ENTERPRISE '\u323E', // PARENTHESIZED IDEOGRAPH RESOURCE '\u323F', // PARENTHESIZED IDEOGRAPH ALLIANCE '\u3240', // PARENTHESIZED IDEOGRAPH FESTIVAL '\u3241', // PARENTHESIZED IDEOGRAPH REST '\u3242', // PARENTHESIZED IDEOGRAPH SELF '\u3243', // PARENTHESIZED IDEOGRAPH REACH '\uFE35', // PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS '\uFE59', // SMALL LEFT PARENTHESIS '\uFF08', // FULLWIDTH LEFT PARENTHESIS // Characters that turn into ')' '\u207E', // SUPERSCRIPT RIGHT PARENTHESIS '\u208E', // SUBSCRIPT RIGHT PARENTHESIS // '\u2474', // PARENTHESIZED DIGIT ONE // ... see '(' // '\u3243', // PARENTHESIZED IDEOGRAPH REACH '\uFE36', // PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS '\uFE5A', // SMALL RIGHT PARENTHESIS '\uFF09', // FULLWIDTH RIGHT PARENTHESIS // Characters that turn into '/' '\u2100', // ACCOUNT OF '\u2101', // ADDRESSED TO THE SUBJECT '\u2105', // CARE OF '\u2106', // CADA UNA '\uFF0F', // FULLWIDTH SOLIDUS // Characters that turn into '<' '\u226E', // NOT LESS-THAN '\uFE64', // SMALL LESS-THAN SIGN '\uFF1C', // FULLWIDTH LESS-THAN SIGN // Characters that turn into '>' '\u226F', // NOT GREATER-THAN '\uFE65', // SMALL GREATER-THAN SIGN '\uFF1E', // FULLWIDTH GREATER-THAN SIGN // Characters that turn into ':' '\u2A74', // DOUBLE COLON EQUAL '\uFE55', // SMALL COLON '\uFF1A', // FULLWIDTH COLON // Characters that turn into '_' '\uFE33', // PRESENTATION FORM FOR VERTICAL LOW LINE '\uFE34', // PRESENTATION FORM FOR VERTICAL WAVY LOW LINE '\uFE4D', // DASHED LOW LINE '\uFE4E', // CENTRELINE LOW LINE '\uFE4F', // WAVY LOW LINE '\uFF3F', // FULLWIDTH LOW LINE // Characters that turn into '{' '\uFE37', // PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET '\uFE5B', // SMALL LEFT CURLY BRACKET '\uFF5B', // FULLWIDTH LEFT CURLY BRACKET // Characters that turn into '}' '\uFE38', // PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET '\uFE5C', // SMALL RIGHT CURLY BRACKET '\uFF5D', // FULLWIDTH RIGHT CURLY BRACKET // Characters that turn into '#' '\uFE5F', // SMALL NUMBER SIGN '\uFF03', // FULLWIDTH NUMBER SIGN // Characters that turn into '\' '\uFE68', // SMALL REVERSE SOLIDUS '\uFF3C', // FULLWIDTH REVERSE SOLIDUS // Characters that turn into '[' '\uFF3B', // FULLWIDTH LEFT SQUARE BRACKET // Characters that turn into ']' '\uFF3D', // FULLWIDTH RIGHT SQUARE BRACKET // Characters that turn into '^' '\uFF3E', // FULLWIDTH CIRCUMFLEX ACCENT // Characters that turn into '|' '\uFF5C', // FULLWIDTH VERTICAL LINE }; public static final int DISPLAY_JUNK_IN_PLACE = 0; public static final int MOVE_JUNK_TO_BOTTOM = 1; public static final int HIDE_JUNK = 2; /** * Setting for whether or not GUESS searching is enabled. */ public static final BooleanSetting GUESS_ENABLED = FACTORY.createBooleanSetting("GUESS_ENABLED", true); /** * Setting for whether or not OOB searching is enabled. */ public static final BooleanSetting OOB_ENABLED = FACTORY.createBooleanSetting("OOB_ENABLED", true); /** * The TTL for probe queries. */ public static final ByteSetting PROBE_TTL = FACTORY.createByteSetting("PROBE_TTL", (byte)2); /** * Setting for the characters that are not allowed in search strings */ public static final CharArraySetting ILLEGAL_CHARS = FACTORY.createCharArraySetting("ILLEGAL_CHARS", BAD_CHARS); /** * Setting for the maximum number of bytes to allow in queries. */ public static final IntSetting MAX_QUERY_LENGTH = FACTORY.createIntSetting("MAX_QUERY_LENGTH", 30); /** * Setting for the maximum number of bytes to allow in XML queries. */ public static final IntSetting MAX_XML_QUERY_LENGTH = FACTORY.createIntSetting("MAX_XML_QUERY_LENGTH", 500); /** * The minimum quality (number of stars) for search results to * display. */ public static final IntSetting MINIMUM_SEARCH_QUALITY = FACTORY.createIntSetting("MINIMUM_SEARCH_QUALITY", 0); /** * The minimum speed for search results to display. */ public static final IntSetting MINIMUM_SEARCH_SPEED = FACTORY.createIntSetting("MINIMUM_SEARCH_SPEED", 0); /** * The maximum number of simultaneous searches to allow. */ public static final IntSetting PARALLEL_SEARCH = FACTORY.createIntSetting("PARALLEL_SEARCH", 5); /** * Whether or not to enable the spam filter. */ public static final BooleanSetting ENABLE_SPAM_FILTER = FACTORY.createBooleanSetting("ENABLE_SPAM_FILTER", true); /** * The display mode for junk search results */ public static final IntSetting DISPLAY_JUNK_MODE = FACTORY.createIntSetting("DISPLAY_JUNK_MODE", MOVE_JUNK_TO_BOTTOM); public static boolean moveJunkToBottom() { return ENABLE_SPAM_FILTER.getValue() && DISPLAY_JUNK_MODE.getValue() == MOVE_JUNK_TO_BOTTOM; } public static boolean hideJunk() { return ENABLE_SPAM_FILTER.getValue() && DISPLAY_JUNK_MODE.getValue() == HIDE_JUNK; } /** * Set how sensitive the spamfilter should be */ public static final FloatSetting FILTER_SPAM_RESULTS = FACTORY.createFloatSetting("FILTER_SPAM_RESULTS", 0.85f); /** * The minimum spam rating at which we stop counting results for * dynamic querying. Meant to prevent very strict user settings * from making dynamic querying too agressive. */ public static final FloatSetting QUERY_SPAM_CUTOFF = FACTORY.createSettableFloatSetting("QUERY_SPAM_CUTOFF",0.4f, "SpamManager.displayTreshold",0.1f,1.0f); /** * The percentage of normal results that spam results bring to * the dynamic querying mechanism */ public static final FloatSetting SPAM_RESULT_RATIO = FACTORY.createSettableFloatSetting("SPAM_RESULT_RATIO", 0.3f, "SpamManager.resultRatio",0.2f,1.0f); /** * Do not issue query keys more than this often */ public static final IntSetting QUERY_KEY_DELAY = FACTORY.createSettableIntSetting("QUERY_KEY_DELAY",500, "MessageRouter.QueryKeyDelay",10,10000); }