我有一个文本文件的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)。