sphinx教程 命令(1)

语句分析:

SHOW STATUS;        显示一些很有用的性能计数器。仅当 searchd 启动时带有 --iostats 和 --cpustats 开关时,IO和CPU计数器才分别可用。

SHOW META;           显示关于上一条查询的一些额外的元信息(meta-information),比如查询时间和关于关键词的统计信息:

查询工具分析:

indexer 命令参考

indexer 是Sphinx的两个关键工具之一。不管是从命令行直接调用,还是作为一个较大的脚本的一部分使用, indexer 都只负责一件事情——收集要被检索的数据。
indexer 的调用语法基本上是这样:
indexer [OPTIONS] [indexname1 [indexname2 [...]]]
用户可以在 sphinx.conf 中设置好可能有哪些索引(index)(这些索引可以在晚些时候别搜索),因此在调用 indexer 的时候,最简单的情况下,只需要告诉它你要简历哪个(或者哪些)
索引就行了。
假设 sphinx.conf 包含了两个索引的具体设置, mybigindex 和 mysmallindex , ,你可以这么调用:

$ indexer mybigindex
$ indexer mysmallindex mybigindex

在配置文件 sphinx.conf 里面,用户可以为他们的数据指定一个或多个索引。然后调用 indexer 来对其中一个特定的索引进行重新编制索引操作,或者是重新编制所有索引——不限于某一个或同时全部,用户总是可以指定现有索引的一个组合。 indexer 的大部分选项都可以在配置文件中给出,然而有一部分选项还需要在命令行上指定,这
些选项影响编制索引这一操作是如何进行的。这些选项列举如下:

  • --config <file> (简写为 -c <file> ) 使 indexer 将指定的文件file作为配置文件。 通常, indexer 是会在安装目录(例如e.g. /usr/local/sphinx/etc/sphinx.conf ,如果sphinx
    被安装在 /usr/local/sphinx )中寻找 sphinx.conf ,若找不到,则继续在用户在shell中调用 indexer 时所在的目录中寻找。 这个选项一般在共享sphinx安装的情况下使用,比如二进制文件安装在 /usr/local/sphinx ,而不同用户都有权定制自己的sphinx设置。或者在同一个服务器上运行多个实例的情况下使用。在上述两中情况中,用户可以创建自己的sphinx.conf 文件,然后把它做为参数传给indexer。例如:

    $ indexer --config /home/myuser/sphinx.conf myindex
    
  • --all 使 indexer 对 sphinx.conf 文件中列出的所有索引进行重新编制索引,这样就不比一次列出每个索引的名字了。这个选项在配置文件较小的情况下,或者在类似基于 cron 的维护工作中很有用。在上述情况中,整个索引集每天或每周或别的什么合适的时间间隔中就重新建立一次。用法示例:
    $ indexer --config /home/myuser/sphinx.conf --all
  • --rotate 用于轮换索引。对新的文档建立索引时几乎肯定都确保搜索服务仍然可用,除非你有信心在搜索服务停止同时不给你的用户带来困扰。 --rotate 建立一个额外的索引,并列于原有索引(与原有索引在相同目录,简单地在原有索引文件名基础上加一个 .new后缀)。一旦这个额外的索引建立完成, indexer 给 searchd 发一个SIGHUP信号做为通知。 searchd 会尝试将索引重新命名(给原有索引加上 .old 后缀,而把带有 .new 后缀的新索引改为原名,以达替换之目的),继而用新的文件重启服务。依 seamless_rotate 选项设定之不同,在新索引可用之前可能有一点小的延迟。用法示例:
    $ indexer --rotate --all
    
  • --quiet 使 indexer 不输出除错误(error)外的任何东西。这个选项仍然拽可用在 cron 定时任务的情境下或者脚本中,这些情况下大部分输出是无关紧要或完全没用的,除非是发生了某些种类的错误。用法示例:
    $ indexer --rotate --all --quiet
    
  • --noprogress 不随时显示进度信息,而是仅在索引结束时报告最终的状态细节(例如为哪些文档建立了索引,建立索引的速度等)。当脚本没有运行在一个控制台(console,
    或“tty”)时,这个选项是默认的。用法示例:
    $ indexer --rotate --all --noprogress
    
  • --buildstops <outputfile.text> <N> 像建立索引一样扫描索引对应的数据源,产生一个最终会被加入索引的词项的列表。换种说法,产生一个用这个索引可以检索的词项的列表。注意,这个选项使indexer并不真正更新指定的索引,而只是“假装”建在立索引似地处理一遍数据,包括运行 sql_query_pre 或者 sql_query_post 选项指定的查
    询。 outputfile.txt 文件最终会包含一个词表,每行一个词,按词频排序,高频在前。参数N指定了列表中最多可出现的词项数目,如果N比索引中全部词项的数目还大,则返回的词项数就是全部词项数。客户端应用程序利用这种字典式的词表来提供“您是要搜索。。。吗?(Did you mean...)”的功能,通常这个选项与下面要讲的 --buildfreqs 选项一同使用。示例:
    $ indexer myindex --buildstops word_freq.txt 1000
    

    这条命令在当前目录产生一个 word_freq.txt 文件,内含myindex这个索引中最常用的1000个词,且最常用的排在最前面。注意,当指定了多个索引名或使用了 --all 选项(相当于列出配置文件中的所有索引名)时,这个选项对其中的最后一个索引起作用。

  • --buildfreqs 与 --buildstops 一同使用 (如果没有指定 --buildstops 则 --buildfreqs 也被忽略). 它给 --buildstops 产生的词表的每项增加一个计数信息,即该词在索引中共出现了多少次,这在建立停用词(stop words,出现特别普遍的词)表时可能有用。在开发“您是要搜索。。。吗?(Did you mean...)”的功能时这个选项也能帮上忙,因为有
    了它你就能知道一个词比另一个相近的词出现得更频繁的程度。示例:
    $ indexer myindex --buildstops word_freq.txt 1000 --buildfreqs
    

    这个命令将产生一个类似于上一条命令的 word_freq.txt ,但不同在于,每个词的后面都会附加一个数字,指明在指定的索引中这个词出现了多少次。

  • --merge <dst-index> <src-index> 用于在物理上将多个索引合并,比方说你在使用“主索引+增量索引”模式,主索引很少改变,但增量索引很频繁地重建,而 --merge 选项允许将这两个索引合而为一。操作是从右向左进行的,即先考察 src-index 的内容,然后在物理上将之与 dst-index 合并,最后结果留在 dst-index 里。用伪代码说就是 dst-index += src-index 。示例:
    $ indexer --merge main delta --rotate
    

    上例中main是主索引,很少更动,delta是增量索引,频繁更新。上述命令调用 indexer 将delta的内容合并到main里面并且对索引进行轮换。

  • --merge-dst-range <attr> <min> <max> 在合并索引的时候运行范围过滤。具体地说,向目标索引 (是 --merge 的一个参数,如果没有指定 --merge , 则 --merge-dst-range 也被忽略)合并时, indexer 会对将要合并进去的文档做一次过滤,只有通过过滤才能最终出现在目标索引中。举一个实用的例子,假设某个索引有一个“已删除(deleted)”属性,0代表“尚未删除”。这样一个索引可以用如下命令进行合并:
    $ indexer --merge main delta --merge-dst-range deleted 0 0
    

    这样标记为已删除的文档(值为1)就不会出现在新生成的目标索引中了。这个选项可以在命令行上指定多次,以便指定多个相继的过滤,这样一个文档要想合并到最终的目标索引中去,就必须依次通过全部这些过滤。

searchd 下篇更新

时间: 2024-11-29 10:18:44

sphinx教程 命令(1)的相关文章

简明Python教程命令行地址簿的Python与Java实现

最近读完了简明Python教程(A Byte of Python),在此书的最后作者建议读者实现一个命令行Python程序: "在这个程序中,你可以添加.修改.删除和搜索你的联系人(朋友.家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码).这些详细信息应该被保存下来以便以后提取." 现在特地来交作业,同时对作者Swaroop, C. H.和译者沈洁元表示感谢!谢谢两位无私的奉献:) 操作系统windows7,Python版本2.7.5. #address.py #首先我们

sphinx教程 区段查询配置 命令(2)

首先查看配置文件 sphinx.conf 区段查询配置: # in sphinx.conf sql_query_range = SELECT MIN(id),MAX(id) FROM documents sql_range_step = 1000 sql_query = SELECT * FROM documents WHERE id>=$start AND id<=$end 如果这个表中,字段ID的最小值和最大值分别是1和2345,则sql_query将执行3次: 将 $start 替换为1

github版本库使用详细教程(命令行及图形界面版)

Git是一个分布式的版本控制系统,作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法. Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括 Rubinius和Merb在内的很多知名项目都使用了Git.Git同样可以被诸如Capistrano和Vl

ROS 新手教程 命令汇总

查看环境变量的配置: [email protected]:~$ export | grep ROS declare -x ROSLISP_PACKAGE_DIRECTORIES=""declare -x ROS_DISTRO="kinetic"declare -x ROS_ETC_DIR="/opt/ros/kinetic/etc/ros"declare -x ROS_MASTER_URI="http://localhost:11311

github版本库使用详细图文教程(命令行及图形界面版)

投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2015-08-06我要评论 今天我们就来学习github的使用,我们将用它来管理我们的代码,你会发现它的好处的,当然是要在本系列教程全部完成之后,所以请紧跟站长的步伐,今天是第一天,我们来学习如何在git上建立自己的版本仓库,并将代码上传到仓库中 Git是一个分布式的版本控制系统,作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户.随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现

git常用命令总结--廖雪峰老师Git教程命令总结

学习了廖雪峰老师的Git教程之后的命令总结,重点关于git和远程仓库的东西. 如果没有学过,这是传送门 下面这个图很重要 一.git初始化本地仓库和配置 echo "想输入到文件的内容,一般为# 库名字" >> README.md git init  初始化一个仓库 如果没有配置需要配置 git config --list git config --global user.email "[email protected]" git config --gl

GIT使用教程——命令详解

$ git init 当前目录建立GIT可以管理的仓库(版本库),生成一个.git的隐藏文件夹 $ git add <filename> 将工作区的文件修改添加到版本库的暂存区 $ git commit -m "tips"   将暂存区的所有修改添加到分支上,tips是本次提交的备注,方便查看 $ git status 本地工作区与分支的代码比较,工作区文件与版本库比较的状态 (modified 文件被修改 ; deleted 工作区文件被删除 ; Untracked 文件

[lua]紫猫lua教程-命令宝典-L1-01-01. Lua环境与IDE

网上大把的lua教程  不过紫猫老师的教程向来都是讲的非常仔细 所以最近天气已经36+了 魔兽世界还需要冲飞行声望  懒得写单子根本没有单子,正好认认真真的看下紫猫老师的lua教程 紫猫老师的lua教程的目的性相当明确就是让人能够独立的编写按键的lua插件  并且公布了紫猫插件的以前版本的源码  这一点对于我而言都是一个惊喜  可从紫猫老师的源码里面学到很多东西 顺路帮紫猫老师打个广告  不过紫猫老师的教程过于细致 什么都讲到了 视频量一直都很大  入学咨询QQ:345911220 紫猫学院官网

[lua]紫猫lua教程-命令宝典-L1-01-02. 变量

L1[变量]01. 变量命名规则 命名规则:数字字母下划线构成 但是不能数字开头 不推荐中文名 很多都是不支持中文 但是在一些其他的编辑器里面 比如触摸精灵 之类的 就可以 注意 :变量命名必须要包含一定涵义   比如我们要用变量存储一个年龄数值 比如我们用 x=18 别人看我们的源码 看到这里 她不明白 X这个变量为18代表什么意思  如果我们用age=18  那么他一看就明白了 方便我们自己 也方便他人  这个是一个良好的习惯 值得培养 注意 变量名区分大小写 注意:变量名有一些系统保留字