DataparkSearch Engine 4.52: Reference manual
Prev | Chapter 6. Subsections | Next

# 6.2. Categories

There is a categories editor written in Perl. You can get it in `perl/cat_ed/` subdirectory of DataparkSearch installation.

Categories are similar to tag feature, but nested. So you can have one category inside another and so on.

Basic points:

- there are up to 6 nested levels;

- every level occupies 2 hex or 36 base digits;

- parameter for setting category is `path`, which can be empty (means root category) or up to 10 chars long (means deepest category).

You can also set up symlinks, e.g. categories that are actually links to other categories. `link` database field is used for that. In the symlink last two characters should be @@. In example above Moto->BMW is a link to Auto->BMW.

First notice that category in the server table is set to be 11 characters long. This means you can use a valid character to keep track of categories. If you are going to keep a category tree of any size, then I would suggest using the category editor. But anyways, here's how it works.

You can use either the tag column or the category column in the server for the same thing. Or you can categorize a site in two different ways. For example you could keep track of sites that are owned by a certain company and then categorize them as well. You could use the tag option to keep of ownership and use the category option for categories. When I explain the category option, it goes the same for the tag option.

A category can be broken down any way you choose. But for it to work with the category editor, I believe for now, you have to use two characters for each level. If you use the category editor you have the choice to use a hex number going from 0-F or a 36 base number going from 0-Z. Therefore a top-level category like 'Auto' would be 01. If it has a subcategory like 'Ford', then it would be 01 (the parent category) and then 'Ford' which we will give 01. Put those together and you get 0101. If 'Auto' had another subcategory named 'VW', then its id would be 01 because it belongs to the 'Ford' category and then 02 because it's the next category. So its id would be 0102. If VW had a sub category called 'Engine' then it's id would start at 01 again and it would get the 'VW' id 02 and 'Auto' id of 01, making it 010201.

If you want to search for sites under that category then you pass it `cat=010201` in the url...so create a select box and give like that:

    <OPTION value="01">AUTO
    <OPTION value="0101">Ford

and so on...

> Note: For dbmode cache you need to have the following section defined in your `sections.conf` file:

>     Section category 0 64

> i.e. in overall you need to have the section 'category' defined with non-zero maximum length.

## 6.2.1. Category command

    Category <string>

You may distribute documents between nested categories. Category is a string in hex number notation. You may have up to 6 levels with 256 members per level. Empty category means the root of category tree. Take a look into Section 6.2> for more information.

    # This command means a category on first level:
    Category AA
    # This command means a category on 5th level:
    Category FFAABBCCDD

## 6.2.2. CategoryIf command

    CategoryIf <category> [Match|NoMatch] [NoCase|Case] [String|Regex] <section> <arg> [<arg> ... ]

Mark document by <category> category, if the value of `section` match `arg` pattern given. The meaning of first three optional parameters is exactly the same as for the Allow command (see Section 3.10.14>).

Example

    CategoryIf 010F regex Title "JOB ID"

Prev | Home | Next
Subsections | Up | Languages support