久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Sphinx/結(jié)果分組

來自站長百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

Sphinx | 安裝 | 建立索引|搜索|命令行工具參考|MySQL存儲引擎

有時將搜索結(jié)果分組(或者說“聚類”)并對每組中的結(jié)果計數(shù)是很有用的-例如畫個漂亮的圖來展示每個月有多少的blog日志,或者把Web搜索結(jié)果按站點分組,或者把找到的論壇帖子按其作者分組。

理論上,這可以分兩步實現(xiàn):首先在Sphinx中做全文檢索,再在SQL服務(wù)器端對得到的ID分組。但是現(xiàn)實中在大結(jié)果集(10K到10M個匹配)上這樣做通常會嚴(yán)重影響性能。

為避免上述問題,Sphinx提供了一種“分組模式”,可以用API調(diào)用SetGroupBy()來開啟。在分組時,根據(jù)group-by值給匹配項賦以一個分組。這個值用下列內(nèi)建函數(shù)之一根據(jù)特定的屬性值計算:

  • SPH_GROUPBY_DAY, 從時間戳中按YYYYMMDD格式抽取年、月、日;
  • SPH_GROUPBY_WEEK, 從時間戳中按YYYYNNN格式抽取年份和指定周數(shù)(自年初計起)的第一天;
  • SPH_GROUPBY_MONTH, 從時間戳中按YYYYMM格式抽取月份;
  • SPH_GROUPBY_YEAR, 從時間戳中按YYYY格式抽取年份;
  • SPH_GROUPBY_ATTR, 使用屬性值自身進行分組.

最終的搜索結(jié)果中每組包含一個最佳匹配。分組函數(shù)值和每組的匹配數(shù)目分別以“虛擬”屬性 @group 和 @count 的形式返回.

結(jié)果集按group-by排序子句排序,語法與SPH_SORT_EXTENDED 排序子句的語法相似。除了@id和@weight,分組排序子句還包括:

  1. @group (groupby函數(shù)值),
  2. @count (組中的匹配數(shù)目).

默認模式是根據(jù)groupby函數(shù)值降序排列,即按照 "@group desc".

排序完成時,結(jié)果參數(shù)total_found會包含在整個索引上匹配的組的總數(shù)目。

注意: 分組操作在固定的內(nèi)存中執(zhí)行,因此它給出的是近似結(jié)果;所以total_found報告的數(shù)目可能比實際給出的個分組數(shù)目的和多。@count也可能被低估。要降低不準(zhǔn)確性,應(yīng)提高max_matches。如果max_matches允許存儲找到的全部分組,那結(jié)果就是百分之百準(zhǔn)確的。

例如,如果按相關(guān)度排序,同時用SPH_GROUPBY_DAY函數(shù)按屬性"published"分組,那么:

  • 結(jié)果中包含每天的匹配結(jié)果中最相關(guān)的那一個,如果那天有記錄匹配的話,
  • 結(jié)果中還附加給出天的編號和每天的匹配數(shù)目,
  • 結(jié)果以天的編號降序排列(即最近的日子在前面)。

參考來源[ ]

Sphinx使用手冊導(dǎo)航

安裝

支持的操作系統(tǒng)|需要的工具|在Linux、BSD上安裝Sphinx|在Windows上安裝Sphinx|已知的安裝問題和解決辦法|Sphinx快速入門教程

建立索引

數(shù)據(jù)源|屬性|MVA|索引|源數(shù)據(jù)的限制|字符集、大小寫轉(zhuǎn)換和轉(zhuǎn)換表|SQL 數(shù)據(jù)源|xmlpipe 數(shù)據(jù)源|xmlpipe2 數(shù)據(jù)源|Python 數(shù)據(jù)源|實時索引更新|索引合并

搜索

匹配模式|布爾查詢語法|擴展查詢語法|權(quán)值計算|排序模式|結(jié)果分組|分布式搜索|MySQL 協(xié)議支持與SphinxQL

命令行工具參考

indexer命令參考|searchd命令參考|search命令參考|spelldump命令參考|indextool命令參考

MySQL存儲引擎

SphinxSE 概覽|安裝 SphinxSE|使用 SphinxSE|通過 MySQL 生成片段