Search
Exact matches only
Search in title
Search in content
Search in excerpt
Search in comments
Filter by Custom Post Type

Try these: applecolorsnumbers

Blog Archives

Adding Plural and Singular Results

Thanks to the code I have added below, the site now searches through singular words when the user has searched a Pluralized word.

Previously the website and its search function could not produce results when anyone uses a plural word (eg. books, legs).

Fortunately I found this code while trying to solve the need to go back and add tags to assign the plural word use.

I thought I would leave the code hear because I think if anyone is trying to reproduce this site, the search function is the heart of he site.

class InflectTest {
    static $plural = array(
        '/(quiz)$/i'               => "$1zes",
        '/^(ox)$/i'                => "$1en",
        '/([m|l])ouse$/i'          => "$1ice",
        '/(matr|vert|ind)ix|ex$/i' => "$1ices",
        '/(x|ch|ss|sh)$/i'         => "$1es",
        '/([^aeiouy]|qu)y$/i'      => "$1ies",
        '/(hive)$/i'               => "$1s",
        '/(?:([^f])fe|([lr])f)$/i' => "$1$2ves",
        '/(shea|lea|loa|thie)f$/i' => "$1ves",
        '/sis$/i'                  => "ses",
        '/([ti])um$/i'             => "$1a",
        '/(tomat|potat|ech|her|vet)o$/i'=> "$1oes",
        '/(bu)s$/i'                => "$1ses",
        '/(alias)$/i'              => "$1es",
        '/(octop)us$/i'            => "$1i",
        '/(ax|test)is$/i'          => "$1es",
        '/(us)$/i'                 => "$1es",
        '/s$/i'                    => "s",
        '/$/'                      => "s"
    );

    static $singular = array(
        '/(quiz)zes$/i'             => "$1",
        '/(matr)ices$/i'            => "$1ix",
        '/(vert|ind)ices$/i'        => "$1ex",
        '/^(ox)en$/i'               => "$1",
        '/(alias)es$/i'             => "$1",
        '/(octop|vir)i$/i'          => "$1us",
        '/(cris|ax|test)es$/i'      => "$1is",
        '/(shoe)s$/i'               => "$1",
        '/(o)es$/i'                 => "$1",
        '/(bus)es$/i'               => "$1",
        '/([m|l])ice$/i'            => "$1ouse",
        '/(x|ch|ss|sh)es$/i'        => "$1",
        '/(m)ovies$/i'              => "$1ovie",
        '/(s)eries$/i'              => "$1eries",
        '/([^aeiouy]|qu)ies$/i'     => "$1y",
        '/([lr])ves$/i'             => "$1f",
        '/(tive)s$/i'               => "$1",
        '/(hive)s$/i'               => "$1",
        '/(li|wi|kni)ves$/i'        => "$1fe",
        '/(shea|loa|lea|thie)ves$/i'=> "$1f",
        '/(^analy)ses$/i'           => "$1sis",
        '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i'  => "$1$2sis",
        '/([ti])a$/i'               => "$1um",
        '/(n)ews$/i'                => "$1ews",
        '/(h|bl)ouses$/i'           => "$1ouse",
        '/(corpse)s$/i'             => "$1",
        '/(us)es$/i'                => "$1",
        '/s$/i'                     => ""
    );

    static $irregular = array(
        'move'   => 'moves',
        'foot'   => 'feet',
        'goose'  => 'geese',
        'sex'    => 'sexes',
        'child'  => 'children',
        'man'    => 'men',
        'tooth'  => 'teeth',
        'person' => 'people',
        'valve'  => 'valves'
    );

    static $uncountable = array(
        'sheep',
        'fish',
        'deer',
        'series',
        'species',
        'money',
        'rice',
        'information',
        'equipment'
    );

    public static function pluralize( $string )
    {
        // save some time in the case that singular and plural are the same
        if ( in_array( strtolower( $string ), self::$uncountable ) )
            return $string;


        // check for irregular singular forms
        foreach ( self::$irregular as $pattern => $result )
        {
            $pattern = '/' . $pattern . '$/i';

            if ( preg_match( $pattern, $string ) )
                return preg_replace( $pattern, $result, $string);
        }

        // check for matches using regular expressions
        foreach ( self::$plural as $pattern => $result )
        {
            if ( preg_match( $pattern, $string ) )
                return preg_replace( $pattern, $result, $string );
        }

        return $string;
    }

    public static function singularize( $string )
    {
        // save some time in the case that singular and plural are the same
        if ( in_array( strtolower( $string ), self::$uncountable ) )
            return $string;

        // check for irregular plural forms
        foreach ( self::$irregular as $result => $pattern )
        {
            $pattern = '/' . $pattern . '$/i';

            if ( preg_match( $pattern, $string ) )
                return preg_replace( $pattern, $result, $string);
        }

        // check for matches using regular expressions
        foreach ( self::$singular as $pattern => $result )
        {
            if ( preg_match( $pattern, $string ) )
                return preg_replace( $pattern, $result, $string );
        }

        return $string;
    }

    public static function pluralize_if($count, $string)
    {
        if ($count == 1)
            return "1 $string";
        else
            return $count . " " . self::pluralize($string);
    }
}


add_filter( 'asp_search_phrase_after_cleaning', 'asp_add_singular_plural', 1, 1 );

function asp_add_singular_plural($s) {
    $s = explode(" ", $s);

    $final = array();

    foreach ($s as $word) {
        $singular = InflectTest::singularize($word);
        $plural = InflectTest::pluralize($word);

        $final[] = $word;

        if ($singular != $word)
            $final[] = $singular;

        if ($plural != $word)
            $final[] = $plural;
    }

    return implode(" ", $final);
}

Understanding the Creative Commons translation policies

During the pioneering of the internet the cyber-native has always been a member of this virtual community. Day one of the internet was a revolution for sharing new ideas, old ideas and aided to bridge the gap for many cultures. Not only has the internet fostered the building of friendships it has allowed for the same type of colonial practices that Indigenous people have faced on a real world environment.developing a

Cyber colonialism is a real threat to growth of the free flow of ideas from a certain unique perspective. Until recently dominate governments from a colonial occupation have staked claims not only to our lands but they have now taken the virtual domain, using the occupied lands as leverage to sell virtual real estate.

This virtual real estate could be anything from National Defence websites, to canadian mom and pop shops. All of which have a stake in oppressing the virtual existence of the real world indigenous populations of which lands they also occupy.

However, this virtual and real world encroachment allows for a one sided view of the actual people living on these lands, allowing for a one sided debate, or the archiving of data on canadian technology.

When a virtual domain has been assigned to the indigenous peoples of north america we just may see a virtual or cyber war rather, that could be potential for a real world conflict. But, when the dust settles whose geo markered servers will be telling the story, and in what language.

The purpose of this article is to provide a fundamental understanding of virtual sovereignty. And, It is my hope that this can be partially achieved by understanding the uses f the Creative Commons apporatice. It is my contention that we proceed with translating the Creative Commons licences into the Kanien’keha language to provide a global mechanism to assert virtual control over our language and place in the global cybernet.

https://wiki.creativecommons.org/wiki/Legal_Code_Translation_Policy