Как извлечь наиболее часто встречающиеся ключевые термины из индекса Сфинкса? - PullRequest
0 голосов
/ 08 августа 2011

У меня есть индекс текстовых файлов Sphinx, и я хотел бы получить список ключевых слов, найденных Sphinx при индексации текстовых файлов, упорядоченных по возрастанию и убыванию по частоте их появления в наборе данных.Как мне это сделать?

Я бы хотел получить как реальный термин, так и основание, если это возможно.

Я использую API-интерфейс PHP для вызова индекса.

Ниже приведены мои настройки Sphinx.conf для этого индекса:

source srcDatasheets
{
    type                = mysql
    sql_host            = localhost
    sql_user            = user
    sql_pass            = pass
    sql_db              = db
    sql_port            = 3306

    sql_query           = \
         SELECT id, company_id, title, brief, content_file_path \
         FROM datasheets

    sql_attr_uint       = company_id
    sql_file_field      = content_file_path
    sql_query_info      = SELECT * FROM datasheets WHERE id=$id
}


index datasheets
{
    source              = srcDatasheets
    path                = /usr/local/sphinx/var/data/datasheetsStemmed
    docinfo             = extern
    charset_type        = sbcs
    morphology          = stem_en
    min_stemming_len    = 1
}

1 Ответ

0 голосов
/ 09 августа 2011

Нельзя получить плотность ключевых слов напрямую из живого индекса с помощью Sphinx. Данные не хранятся таким образом, который позволяет это. Вот ответ с форумов Сфинкса .

Однако вы можете запустить индексатор с помощью --buildstops и --buildfreqs ( см. Документы ). Индексатор выведет текстовый файл с наиболее часто встречающимися терминами и частотами на основе настроек, которые вы используете в файле .conf для этого индекса.

Это обрабатывает набор данных для создания списка и текстового файла и фактически не создает новый индекс для поиска.

Я выполнил тест по индексу текстовых файлов (преобразованных PDF-файлов) с минимальной длиной слова и минимальной длиной в 5 символов. 70 000 файлов обрабатываются примерно за 20 секунд (5 минут с минимальным количеством символов, установленным в 1).

...