Sphinxsearch index min_stemming_len - PullRequest
       6

Sphinxsearch index min_stemming_len

0 голосов
/ 03 апреля 2012

Вот моя конфигурация поиска sphinx (sphinxsearch_0.9.9-6_amd64):

index FULL
{
    charset_type            =       utf-8
    source                  =       FULL
    path                    =       /var/sphinx/data/Full
    docinfo                 =       extern
    mlock                   =       0
    min_stemming_len        =       1
    min_prefix_len          =       1
    min_word_len            =       1
    html_strip              =       1
    index_exact_words       =       1

}

searchd
{
    listen                  =       192.168.2.3
    log                     =       /var/log/sphinxsearch/searchd.log
    query_log               =       /var/log/sphinxsearch/query.log
    read_timeout            =       3
    client_timeout          =       60
    max_children            =       30
    pid_file                =       /var/run/searchd.pid
    max_matches             =       1000
    seamless_rotate         =       1
    preopen_indexes         =       0
    unlink_old              =       1
    mva_updates_pool        =       1M
    max_packet_size         =       8M
    max_filters             =       256
    max_filter_values       =       4096
}

Я использую php в качестве клиента

$sphinx_client->SetServer('localhost', 9312);
$sphinx_client->SetConnectTimeout(1);
$sphinx_client->SetArrayResult(true);
$sphinx_client->setRankingMode(SPH_RANK_WORDCOUNT);
$sphinx_client->SetMatchMode(SPH_MATCH_EXTENDED2);
if ($mode == 'all') {
$sphinx_client->SetSortMode(SPH_SORT_RELEVANCE, 'category');
} else {
$sphinx_client->setFilter('category', array($this->_filter_category), FALSE);
}
$sphinx_client->SetLimits(0, $this->_limit);
$results = $sphinx_client->Query('"^'.$query.'$"', 'FULL');

например, у меня есть эти имена в индексе: 1. Алекс 2. Ален 3. Джордж 4. A 5. G

::: Когда я пытаюсь найти простую 1 символьную строку «A», я получаю Ален /Alex / A и т. Д.

Как выполнить поиск по длине строки, чтобы я мог отображать их в правильном порядке, например: A / Alen / Alex ...

Я также получаю "ПРЕДУПРЕЖДЕНИЕ: index 'FULL': без морфологии, index_exact_words = 1 не имеет никакого эффекта, игнорируя "

С наилучшими пожеланиями

1 Ответ

1 голос
/ 04 апреля 2012

используйте порядковое поле ( str2ordinal ), выполните обычный поиск, но измените режим сортировки: переключитесь в расширенный режим и используйте комбинацию, например, $ sphinx_client-> SetSortMode (SPH_SORT_EXTENDED, '@weight desc, myordinal) по возрастанию ');

...