sphinx无法启动的解决

   sphinx无法启动的解决

  索引或者查询时提示:ERROR: invalid token in 配置文件 line 1 col 1.:

  该提示表示当前的配置文件的编码不是UTF-8(无BOM头)格式,无法正确解析,请使用编辑软件打开配置文件,另存为UTF-8(无BOM头)格式;

  错误的编码格式包括:Unicode、Unicode BOM、Unicode big endian、Unicode 低位在前、UTF-8 + BOM、UTF-8 Signature、UTF-8 包含签名等;

  特别注意:Windows自带的记事本(Notepad)或者写字板(WordPad)无法正确保存为所需格式,请勿使用其编辑配置文件;

  在sphinx中处理使用特殊字符时所引起错误的办法

  用sphinx搜索引擎时,有时会遇到一些特殊字符,这些特殊字符可能会是sphinx致命性错误来源:

  如 “$”、“^”,在sphinx搜索关键字的最前或最尾出现这样的字符时(单独使用也一样),就会导致sphinx致命的错误。例如用“$笔记本”或“笔记本^”作为关键字搜索时,就会引起类似'Query failed: index product: syntax error, unexpected '"'。

  在搜索关键字的前面和后面自动加上半角的空格符“ ”可以解决此问题,且不会影响搜索结果。

  ERROR: index ‘product’: raw_hits: write error: 122070 of 262017 bytes written

  A:此类问题是索引写入磁盘错误导致,有多个原因。注意查看磁盘空间是否已满。另外,还可能是因为是否有多个indexer进程在进行,写入索引失败!还有个解决方法是:减少 indexer配置中 max_iosize的大小。max_iosize是sphinx最大允许的I/O操作大小,以字节为单位,用于I/O节流。比如可以设置为 524288(512KB)

  1、增量索引,注意删除的问题 2、对大数据,一定要给sphinx数据目录留出大量空间,因为临时文件会占据非常大的空间

  Q、编译安装时出现这个问题….sphinx.cpp; then mv -f “.deps/sphinx.Tpo” “.deps/sphinx.Po”; else rm -f “.deps/sphinx.Tpo”; exit 1; fi In file included from sphinx.cpp:14:sphinx.h:54:19: error: mysql.h: No such file or directory….

  A:缺少libmysqlclient15.so,安装mysql-devel.如果已经存在。请使用ldconfig加载一下这个动态链接库(linux)

  Q: sphinx在rotate时出现以下问题。(searchd.log) WARNING: rotating index ‘sphinx’: prealloc: mmap() failed: Cannot allocate memory (length=431854320); using old index,同时,在索引数据目录中会出现sphinx.spl sphinx.new.spl的情况,导致原来的索引不能正确的检索到

  sphinx indexer有2个进程同时在运行,sphinx 的indexer不能同时使用,导致无法分配内存。并使indexer使用旧的索引文件

  先了解一下sphinx的 –rotate机制:

  indexer完成索引->发送SIGHUP 给searchd(同时在终端输出索引已经完成)->searchd接到中断信号->等待所有子进程退出->重命名 当前索引为旧索引为 .old

  ->重命名 .new 索引文件作为当前索引->尝试加载当前索引文件->如果加载失败,searchd会把.old文件回滚为当前文件,并把刚建立的新索引重命名 为 .new ->加载成的话:完成无缝衔接

  执行 rotate开关情况下,indexer在完成索引后会首先会发送一个中断信号给searchd(并且会输出已经索引完成)。

  接着 searchd会做以下事情:

  1)等待所有子进程退出

  2)重命名 当前索引为旧索引为 .old

  3)重命名 .new 索引文件作为当前索引

  4)尝试加载当前索引文件

  5)如果加载失败,searchd会把.old文件回滚为当前文件,并把刚建立的新索引重命名为 .new

  鉴于以上情况,很可能是开启了2个检测目录访问权限的进程。用户同时使用2个indexer且 searchd运行其下 等等

  sphinx的searchd在启动时会创建一个 .spl 锁文件,并在关闭时会删除它。在indexer创建索引时如果发现有 .spl文件,则不会创建新索引,除非使用 –rotate

  所以,出现这样的问题可能是 锁文件不知咋的就丢失啦,或者重建索引时没有使用 –rotate开关

  原文:

  http://www.sphinxsearch.com/forum/view.html?id=274

  It seems that

  a) the lock files were lost somehow, and

  b) you ran indexer without –rotate switch.

  Normally, searchd would create .spl lock files on startup (and kill them on shutdown),

  and indexer would then refuse to reindex without –rotate switch.

  indexers sends SIGHUP to searchd when completed (and it should print that out). searchd

  then does the following:

  1) waits for all children to exit

  2) renames current index files to .old

  3) renames .new index files to current

  4) tries to load current index files

  5) if something failed, it rollbacks current files from .old and new to .new

  In your case I would start with double checking directory access rights, users which both

  indexer and searchd run under, etc.

  具体操作:

  killall searchd 然后重启。重启后会自动加载重命名 sphinx.new.sp*为 sphinx.sp*

  另外,出现这样的问题时,最好注意 –rotate的使用,在应用许可 的情况下,不妨直接采用 关闭searchd 再索引,然后再开启 searchd

  Q:关于updateAttribute更新索引的问题

  sphinx使用api不能马上真正的更新索引,但更新后api能显示索引已经是更新了。不过使用cli端的search就不能搜索到。只有在searchd重启后才会写入磁盘文件中。切记!

  Q、sphinx安装make时,碰到libiconv的问题。

  查了半天,改Makefile,configure都不可靠。最后在官站上查到:

  ./configure –without-iconv,就好了。NND,那干嘛还要这个iconv嘛。

  看出错代码里,是在xmlunknowencode时才用到。我们都用utf-8,很多时候可能压根用不着这个功能!如若需要的话,可以加上这个lib

  Q、检索出来后结果id排序问题

  SELECT * FROM documents WHERE id IN (3,5,7) ORDER BY FIELD(id,3,5,7);

  或

  SELECT * FROM documents WHERE id IN (3,5,7) ORDER BY substring_index((id,3,5,7),id,1)

  Q、WARNING: sort_hits: merge_block_size=248 kb too low, increasing mem_limit may improve performance

  A、增大mem_limit的值

  Q:sphinx排序问题

  $sphinx->SetSortMode(SPH_SORT_EXTENDED,’status DESC,is_deleted DESC’); //组内排序 setGroupBy排序的话,分成组间排序和组内排序,比如:(317,1,hello),(317,0,world)。如果组内排序的话,需先使用SetSortMode(),进行自然排序,然后 使用group排序,这样在组间排序和组内排序都成自然状态了!

  Q、WARNING: maxed out, dismissing client

  这是sphinx 客户端找不到searchd守护进程。具体可能是索引的锁文件了 (***.spl)丢失, 这个文件通常是用来标识searchd是否开启。

  通常客户端也会返回“zero-sized searchd response”。 解决办法: 重启searchd即可 作者的话: It seems that a) the lock files were lost somehow, and b) you ran indexer without --rotate switch. http://www.sphinxsearch.com/forum/view.html?id=247

  Q、CentOS5.4 安装coreseek-3.2.13的mmseg 时,./configure 出现错误:config.status: error: cannot find input file: src/Makefile.in

  coreseek安装需要预装的软件:# yum install gcc gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel#aclocal#libtoolize --force#automake --add-missing#autoconf#autoheader


  重新configure即可!原文请参考:http://www.coreseek.cn/news/6/100/

  Q:coreseek 在安装 make 时候出现 undefined reference to `libiconv’

  A:编辑:

  ./src/MakeFile文件

  将

  LIBS = -lm -lexpat -L/usr/local/lib

  改成

  LIBS = -lm -lexpat -liconv -L/usr/local/lib

  Q:在分布式搜索中api调用出现 search Error: unknown local index ‘allindex’ in search request

  具体配置是index allindex

  {

  type = distributed

  local =usertest1stemmed

  local =testidx

  agent = localhost:3306:agentdata1,agentdata2

  agent_connect_timeout = 1000

  agent_query_timeout = 3000

  }

  A:这里是sphinx在解析localhost的时候不能正确指向127.0.0.1 ,所以更改一下配置中的localhost即可。即:

  agent = 127.0.0.1:3306:agentdata1,agentdata2

时间: 2024-10-26 03:12:24

sphinx无法启动的解决的相关文章

Linux系统Centos无法启动怎么解决

Linux系统Centos无法启动怎么解决   解决方法: 1. 我们尝试了单用户是否可以登录啊,怎么做就不说了,耶可以登录,想了想是不是硬盘的问题呢,fsck修复了下还是不行.google吧. 从报错的信息来看,是调用prefdm时候出现问题的,那这是一个什么东西呢?网上一查询,这是启动X桌面的东东,是一个shell脚本,栖身在/etc/X11/prefdm. 2. 在单用户下可以正常登录,非单用户模式的时候却不行.看了下配置的runlevel是5,我们换了下3发现也没有问题,好啦,可以正常启

Win7系统安装IE10浏览器后无法启动怎么解决?

  Win7系统安装IE10浏览器后无法启动怎么解决?           解决方法: 1.首先确定你下载的IE10安装程序对应你Win7旗舰版的位数,有32位和64位之分; 2.确定你的Win7旗舰版为SP1版本,如果不是那么需要先安装Win7 SP1补丁; 3.电脑是否中毒,进行查杀后再进行安装; 4.权限不足,可以使用右键点击IE10安装程序,然后以管理员身份运行.

mysql服务无法启动(1067)解决办法

  mysql教程服务无法启动(1067)解决办法 把mysql程序卸载后, 重装, 结果mysql服务启动不了, 解决方法: 1: 先卸载mysql, 手动将其安装目录里没有删除干净的文件全部删除. 2: 将C:ProgramDataMySQL 里有关mqsql的文件全部删除. 3: 重新安装 mysql 程序. mysql服务就可以正常启动了 MySQL服务无法启动(1067)问题解决 1,安装目录,将my.ini中的datadir的值更改为:"%安装目录%/data/" 2,进入

360急救盘无法启动的解决方法

  360急救盘 是一款装在U盘上的急救系统,在您的计算机系统被破坏到无法启动的时候,它可以帮您抢救您的文件,转存重要的数据,让您在关键时间对计算机进行操作,甚至还可以对您的系统进行终极修复--系统重装. 但是有的小伙伴安装后发现360急救盘 无法启动怎么办呢? 不要着急,小编来告诉大家360急救盘无法启动的解决方法. 360急救盘无法启动会有命令提示 一.提示"Unable to boot - Please use a kernel appropriate for your CPU"

Win8.1系统Update无法启动如何解决?

Win8.1系统Update无法启动如何解决?          是否需要重装系统吗?不,这时可以使用Win8.1安装镜像+应急命令来修复,例如最经典的sfc /scannow命令. 解决方法: 1.首先下载一个Win8.1系统镜像,刻录DVD安装光盘或者制作U盘启动工具. 2.接着插入DVD安装光盘或者U盘,打开电脑电源,设置BIOS启动项,使用安装光盘/U盘启动. 注意:当出现上图提示后,快速敲击任何按键 3.当出现Win8.1安装界面时,使用组合键Shift + F10打开命令窗口. 4.

风扇工作电脑不能启动故障解决方法

    相信许多用户都遇到过按下电源开关,风扇正常工作但电脑却不启动的情况,对于系统启动后的一些小毛病,大多数用户还可以解决,但遇到连开机都无法正常启动 的问题,大多数用户则不知道该从何处入手解决.其实电脑不能正常启动故障的排除不难,今天小编就对风扇工作但主机不能启动故障进行解析,解决电脑启动的那 些麻烦事.     风扇工作电脑不能启动故障解决方法:     1.电源开关故障     当电源开关按键因为老化不能复位时,或机箱前面板因为变形导致电源开关按钮按下后不能及时复位,使用开关始终处于接通

win7备份文件提示“由于内部错误,备份应用程序无法启动”如何解决

win7备份文件提示"由于内部错误,备份应用程序无法启动"如何解决   具体方法如下: 1.进入win7系统后,鼠标右键点击桌面上的"计算机"图标,接着点击"管理"选项; 2.在打开的计算机管理窗口,我们依次点击展开"服务和应用程序--服务",在右边窗找到"Windows Backup",鼠标左键双击打开它,如下图所示: 3.然后在属性设置窗口中选择"常规"选项,并在"启动类型

Windows下PHP安装路径配置错误导致Apache无法启动怎么解决?

  这篇文章主要介绍了Windows下PHP安装路径配置错误导致Apache无法启动的解决方法,本文可以说是一个引号引发的悲剧,需要的朋友可以参考下 LoadModule php5_module "C(/D):/Program Files/php5/php5apache2_2.dll" PHP安装路径引起的apache无法启动错误 今天给一同事的PC机安装部署web服务的时候,按同事要求把所有程序文件放到安装目录的program files下,于是我把apache安装到了c:progr

AIX突然断电后hacmp无法启动的解决方法

AIX是一款类UNIX操作系统,而hacmp是用于AIX系统的一种控制应用程序,当AIX突然断电后,会出现hacmp无法启动的情况,下面小编就给大家介绍下AIX断电后hacmp无法启动的解决方法. 因为ups问题导致数据库小型机及存储等断电,hacmp不能启动, 发现jzpt1上的硬盘识别有问题,原来硬盘是从hdisk0--hdisk11,现在是hdisk2到hdisk9没有了,后面从hdisk12之后有不少硬盘,通过rmdev -Rdl hdisk2到所有末尾硬盘,cfgmgr -v重新识别,