如何从Sphinx索引中检索出现频率最高的关键字?



我有一个文本文件的Sphinx索引,我想检索Sphinx在索引文本文件时找到的关键字列表,按它们在数据集中出现的频率从高到低排序。我该怎么做呢?

如果可能的话,我想同时检索实项和词干。

我使用PHP api来调用索引。

下面是我对这个索引的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
}

不能直接从Sphinx的实时索引中检索关键字密度。数据的存储方式不允许这样做。以下是来自Sphinx论坛的回复。

然而,你可以做的是用——buildstops和——buildfreqs运行索引器(参见文档)。索引器将根据您在.conf文件中为该索引设置的设置,输出一个包含最频繁出现的术语和频率的文本文件。

这将处理数据集以创建列表和文本文件,而实际上并不创建一个新的可搜索索引。

我对最小单词长度和最小词干长度为5个字符的文本文件(转换后的pdf)的索引进行了测试。在大约20秒内处理70,000个文件(5分钟,最小字符限制设置为1)。

最新更新