我们正在运行Sphinx1.10版本。我们在Loadbalancer下有多台sphinx服务器,其中searchd正在运行。我们希望通过NFS跨多个服务器共享相同的索引文件。我们不希望使用rsync,因为它会让不同的服务器在不同的时间使用索引进行更新,因此会在搜索输出中产生不一致性
由于.lock文件的创建,目前我们无法通过NFS在多个服务器中启动searchd。任何解决方案都会大有裨益 我可以说,在两个或多个searchd实例之间共享索引是不可能的。
您必须实现类似于rsync的东西,看看我们
我目前正在试验sphinx实时索引。我插入了450万份文件
一切正常,而我的json元属性如下:
{"result_type":"publications","publication_type":"essay"}
select * from url where meta.publication_type='essay';
但昨天,我想在“publication_type”键和json中添加另一个值
结果:
{"result_type":"publications","publication_
我使用Mysql编辑器从表中删除了记录
此表以前由Sphinx编制索引(使用索引器--rotate)
当我再次使用索引器--rotate重新旋转时,仍然可以查询旧记录
为了测试是否实际遵守了索引,我
增加了一项新记录
修改了一个旧的
我重新旋转,新的/修改的记录如预期的那样,但在SphinxQL查询期间仍能找到已删除的记录
最后,我在索引中添加了一个Where条件,这样它只会索引那些Add=1的记录
然后我用原始ID添加回旧记录,并设置Add=0
现在,在SphinxQL查询期间找不到该记录
我在CentOS 7上安装了sphinx-2.2.11
yum install -y postgresql-libs unixODBC wget
http://sphinxsearch.com/files/sphinx-2.2.11-1.rhel7.x86_64.rpm yum
install sphinx-2.2.11-1.rhel7.x86_64.rpm
安装过程中没有任何错误,然后我创建了sphinx配置并安装了php扩展(也都没有错误)
我重新启动apache(httpd)并
我试
主题
需要按分组后进行筛选
附言:我知道,Sphinx不是SQL存储的替代品:-)从我所看到的,Sphinx没有SQL的HAVING语句。如果你找到更好的答案,请告诉我。我很感兴趣。对属性值进行过滤可以用来做一些与SQL具有相同功能的事情。请参阅参考手册第3.3节,了解您的狮身人面像版本
我认为最新版本的手册可能已经过时了,其中说MVA只能是32位整数
我的广告模型中有以下属性:
has sort_by_date, :as => :timestamp, :sortable => true
在ads表中有一个按日期排序的字段,这是一个日期时间字段
但是,当我搜索时,将以下内容作为我的:order选项传递(我想先显示较新的广告,然后按相关性排序)
我得到以下错误:
ThinkingSphinx::SphinxError (index ad_core: sort-by attribute 'sort_by_date' not found
我对狮身人面像有一个奇怪的问题,我正在尝试匹配以下内容:
洛杉矶机密
所以人们可以搜索“洛杉矶机密”,仍然可以得到这个标题。与“P.M.”类似
能够匹配“PM”等
我试着把句点(句号U+002E)放在忽略字符列表中。这
没什么区别
然后我尝试实现index_sp=1。这也没有解决问题
根据我对文档的理解,这两个问题都应该解决
这个问题正确吗
我想知道这是否与我们的数学模式有关,该模式设置为extended2,使用
斯芬克斯2.0.3
任何帮助都将不胜感激
编辑,这是我的思考_sphinx.yml
我有以下在我的索引这是测试,我想能够搜索“这是测试”。
换句话说,我在寻找与单词位置无关的精确匹配
这是真的吗
$cl->SetMatchMode( SPH_MATCH_EXTENDED);
$result = $cl->Query( '"this test is"~3', $index );
如果是真的,那么~后面的数字是否应该是单词的计数,以便在不考虑位置的情况下获得精确的匹配搜索
我已经测试了结果,它看起来不错,但我不确定。您使用的接近运算符对我来说很好
我需要为Rt索引和普通索引设置Group by
例如:
我有4个记录,在普通索引中有不同的文档ID,年龄相同
而且我在RT索引中有两条相同文档ID的记录,它们的年龄相同
当我通过组合两个索引放入GROUP BY时…分组计数希望两个索引中的相同文档ID保持不变。。。但对于我来说,返回的分组计数也包含在相同文档ID的整个计数中
Rt index data:
+-----------+------+
| id | age |
我在Sphinx中完成了一些复杂的regexp_过滤器,这些过滤器在某些方面工作得很好,但破坏了对相关单词的“正常”搜索。有没有一种方法可以看到斯芬克斯实际上在内部索引了这些单词,这样我就可以在需要时将它们称为“独立单词”?我可以发出一些命令来读取实际的索引文档?您无法从索引中获取它。实际上,索引的格式不适合提取每个文档的文本
但是请务必查看indextool命令,特别是--dumpdict,可能还有--dumphitlist。另外,--fold选项可能很有用(我不确定它是否运行regexp\u
我有一个我认为非常简单的SphinxQL查询,但结果是@variables已被弃用(见下面的示例)
我觉得必须有一种方法可以根据比赛强度对结果进行排序。什么是替代品
另一方面,如果我想在其中包括一个贬值,如果某些其他的话出现。例如,假设我想对其中包含“服装”一词的结果进行贬值。这可以在同一个查询中执行吗
谢谢 好的结果是“默认”的重量下降,所以只要做
SELECT * FROM test1 WHERE MATCH('tennis') LIMIT 0,1000 OPTION ...
但除此之外
我对文本字段使用sql_attr_str2 ordinal,所以我可以进行排序。我已经阅读了说明其工作原理的文档(使用字节等)。如果我理解正确,就不可能按区域设置对文本字段进行排序?这怎么可能实现呢
排序示例(查找字母):
错误排序:
A.
B
C
D
E
.
.
.
Z
č
正确排序:
A.
B
C
č
D
E
.
.
.
z
从文档:
理想情况下,字符串的排序应该有所不同,具体取决于
编码和区域设置。例如,如果已知字符串是
KOI8R编码的俄语文本,对字节0xE0、0xE1和0xE2进行排序
如果在代码(python)中“手动”转义特殊字符,是否需要在conf charset_表中包含这些字符?我还没有把它包括进去,而且效果很好:-/它们做的事情略有不同。charset_表影响“输入文本”本身作为单词进行标记和索引的方式。(以及查询本身如何标记化)
所以,如果您希望将这些“特殊字符”作为单词之间的分隔符,那么将它们从字符集表中删除,并在查询[1]中转义它们。(这似乎就是你所拥有的)
但如果您希望将这些字符作为单词字符(作为单词的一部分包括在内),那么它们应该包括在charset_表中
这是我的第一个问题,请原谅我的错误:。
作为一个框架,我正在使用Yii2,在任何请求开始时,我都会遇到一个问题,即通过命令接收sphinx中分布式索引代理的响应:
DESCRIBE `10.0.0.22:9312:indexName`;
我得到:
ERROR 1064 (42000): sphinxql: syntax error, unexpected $undefined, expecting IDENT (or 49 other tokens) near '`10.0.0.22:9312
我的系统是
% uname -or
FreeBSD 11.0-RELEASE-p2
斯芬克斯版本是
% searchd --help
Sphinx 2.2.11-id64-release (95ae9a6)
狮身人面像配置:
index content_rt_template : common_template
{
type = rt
rt_mem_limit = 128M # 128M only...
我有一个regexp\u过滤器,它在我的文档中查找模式,例如
regexp\u filter=Bob Smith=>Robert Smith
但是,我发现当模式文本位于括号内时,这不起作用,例如
他和我的老板(鲍勃·史密斯)应该
我尝试了一些方法来摆脱(
在停止字中添加了()
添加了不包含paren的自定义字符集
但无论如何,当模式位于括号内时,它们是不匹配的
是否有任何方法可以正确执行此操作
更新是,连字符也会发生同样的情况。即使我在Stopwords或Charset中明确删除它们,或者甚至创
我有一个具有多个关联的模型,我在索引配置中创建了关联模型的提要,例如,人是主模型,这有索引的关联-例如就业职位、文档、面试等
因此,我真的想确定sphinx搜索用于获得结果的内容,以便我可以在主模型或关联模型上使用摘录
因此,如果我有10个文档附加到一个人身上,并且我使用“Java”之类的搜索词,我希望能够检测出哪个关联模型具有最高排名的匹配/或者发现哪个关联模型是匹配的基础
问题2
我也有点困惑——当斯芬克斯使用摘录时,如果搜索使用了一个字段,例如@person\u job\u title“j
我正在尝试使用sphinx和ajax进行谷歌风格的自动完成搜索。
假设用户正在寻找iphone。目标是像“ip”、“iph”、“ipho”这样的输入必须给我结果,但它不能给我结果,而“iphon”或“iphone”可以。
那么,我做错了什么
index product
{
source = product
path = /var/lib/sphinx/product
docinfo = extern
mlock =
我正在尝试将斯芬克斯与一个名为questasy的服务结合使用,没有人会知道。我们的荷兰大学以前就这样做过,该软件无疑为我们提供了通过Sphinx进行搜索的机会
我的问题是:
我设置了questasy门户,启用了questasy的使用,门户运行得非常完美
我将Sphinx解包到C:/Sphinx,创建了/data和/log目录
我设置了配置文件并运行了索引器。它起作用了
我将searchd安装为带有配置的服务,它可以工作并运行
但现在,当我尝试在门户中搜索时,它会显示一条类似“内部错误”的消息。请
我曾尝试将sphinxsearch配置为lumen 5.2,但无法完成
1) We can not add directly publish the provider in the lumen
2) How to define that provider and alise for the installation.
我使用了斯芬克斯搜索:
有人能帮我整合一下吗
提前谢谢
文档中说:“如果有7个本地索引要搜索,而dist_线程设置为2,
然后将创建两个并行线程:一个按顺序搜索4个索引,然后
另一个用于搜索其他3个索引。”
但是当使用“dist_线程”时,插入记录的算法会改变吗?
如果是,怎么做
我还想知道以下几点:如果rt索引的rt_mem_limit=10GB
dist_线程=4。这是否意味着rt_mem_限制可以被视为等于40GB。或
rt_mem_limit和dist_线程是否不相关
我对允许特殊字符(#、@、!、&、(、)、%作为Sphinx中的搜索关键字的实现感到震惊
请建议我
下面是配置文件
/*开始*/
source dbserver
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db
我安装了Thinking sphinx 3 on Rails 3应用程序和新的sphinx 2.1.1-beta,在此之前我已经安装了
考虑Sphinx2和Sphinx2.1.1-beta,它们在sphinx.yml
但现在,当我在thinking_sphinx.yml中添加端口:3312时,我得到了结果
rake ts:start
Failed to start searchd daemon. Check myapp/log/development.searchd.log.
Failed
我正在努力改进我的斯芬克斯外形,但我对以撇号结尾的单词有一个问题
例如,对于Surfin'USA结果,使用“Surfin USA”搜索返回匹配,但“Surfing USA”不返回任何内容。如何设置Sphinx以返回这种情况下的结果?嗯,这是一个有趣的问题。不确定狮身人面像是否能自动处理这个问题,因为它无法知道撇号代表什么。我想在某些情况下,它可能是多方面的
我能想到的唯一方法就是在例外中列出它们,你可以建立一个包含所有想要支持的单词的列表
Surfin' > Surfing
必须使用例外
在执行旋转和重新生成索引之后,Sphinx不包括来自数据库的新记录。它没有给出任何错误,还包括旧的索引数据
我删除了数据文件并重试,但结果相同。
我也应用了范围查询,但结果是一样的
因此,我现在无法更新搜索索引:
下面是我的配置,谢谢你的提示:
source search_song
{
type = mysql
sql_host = localhos
我正在用Sphinx索引一些数据我有已分类的对象,并且这些类别具有继承权。我的基本表格结构如下:
Objects
| id | name |
| 1 | ABC |
| 2 | DEF |
...
Categories
| id | name | parent_id |
| 1 | My Category | 0 |
| 2 | A Child | 1 |
| 3 | Another Child | 1
我在两台服务器上都使用Sphinx2.0.5-release。
两台服务器都有相同的索引器。我在两台服务器上都运行了搜索。但是我想
从服务器2获取服务器1的数据。
我使用了这个特殊的代码:
$cl = new SphinxClient;
$cl->SetServer(remote_sphinx_server,9312); (remote_sphinx_server : IP address of 2nd
服务器)
$cl->SetMatchMode(SPH_匹配扩展);
$result=
我有以下SphinxSE查询返回一些奇怪的结果:
select distinct
model,
keywords,
`name`,
image,
products_parent_status,
`status`,
final_price,
source,
source_id,
description,
subdescription,
language_id,
feature,
var_val,
weight
from __search
where query='@(keywords,name,m
我使用Sphinx 3.1.1(通过ThinkingSphinx 4.4.1)和实时索引(即,它们不直接由MySQL表备份)
在我的开发机器上,我可以成功地搜索带有ASCII和非ASCII(重音UTF-8)字符的字符串
staging机器上部署了相同的Sphinx版本,我在这两个机器上使用完全相同的配置
但是,在登台计算机上,只有当搜索字符串中的所有字符都是ASCII字符时,我的搜索才会返回值。(在本例中,Sphinx似乎返回正确的记录。)当搜索字符串包含重音字符时,Sphinx返回一个空集。(
使用sphinx RT(实时),我有一个当前的工作设置
但我想添加一个新字段来跟踪:rt\u field new\u field
将上述内容添加到我的sphinx.conf中,并发出/etc/init.d/sphinxsearch restart后,尝试填充sphinx会产生一个错误,指出我的新字段是未知列。
(文档中没有明确提到RT索引的这一点。)
问题是:
我是否必须删除索引文件并让sphinx重新创建它,或者是否有方法更新索引文件以及如何更新?重新创建索引和重新索引所需的sphinx RT
我对Ubuntu上的Sphinx搜索有一些问题。我的测试设置在Mac上,我使用sphinxsearch.com中的预编译二进制文件
测试异常时,一切正常。例如,我想把《星球大战》映射到《星球大战》,所以我的exceptions.txt中有《星球大战=>starwars》,效果很好。当我在我们的Ubuntu服务器上做同样的事情时,if什么也不做
我自己也试过编译狮身人面像,但还是不走运。发生了什么,还有其他人看到了操作系统之间的差异吗
我正在运行Ubuntu10.04 lts和最新的Sphinx搜
狮身人面像
sql_query = SELECT item_id, item_title, item_time, cat_id, region_id, region_parent, region1, region2, region3, metro_id, group_id, doc_words, FROM articles;
sql_attr_uint = cat_id
sql_attr_uint = region_id
sql_at
即使我将它们显式添加到charset_表中,它们似乎也不会索引:
charset_table=... U+20AC->U+20AC, U+00A3->U+00A3
我甚至试着把它们映射到美元符号上
U+0024->U+0024, U+20AC->U+0024, U+00A3->U+0024
然而,在每种情况下,它们都无法识别,换句话说,MATCH('1000')将找不到“cost is£1000”,如果我尝试按照第二个示例映射到$,则MATCH('1000)也
我正在尝试使用Sphinx查找在其标题列中包含单词的行
查询如下所示:
从匹配的my_表中选择*(“@title”words”)
但它也会返回包含word(不包含s)的行,而不是标题中的words
我做错了什么?听起来你在索引上启用了形态学(特别是词干?)
应考虑启用index\u exact\u words
它给出了精确的形式运算符
MATCH('@title =words')
还提供了有趣的扩展_关键字选项:)
。。。或者,如果不需要这些匹配,可以禁用词干分析:)唉,没有“词干分析可选
我是否可以在数据库数据中添加一个名为“updated”的布尔字段,如果它是真的(对于更新或添加的记录是真的),请在我的增量索引中对其重新编制索引?我问这个问题的原因是,我相信更新记录的索引将在主索引和增量索引中
编辑:如果我有一个杀手名单在我的主索引上使用了这个布尔值,看起来我可以这样做?是的,这是可能的,这就是为什么创建索引合并以将“增量”合并回主索引的原因
只要您有方法选择需要创建到“delta”索引的数据部分,就可以了
我在我的网站上实现了sphinx搜索引擎,通过SpinxSE,它看起来一切正常,除了我在我的网站上使用的排序方法之一,排名,它可以是负数。出于某种原因,当我按从高到低的降序对其排序时,负数作为最高评级出现在列表的顶部,一旦它达到正数,它就会正常出现
WHERE query='keyword;sort=attr_desc:v_rating;'
在项目排名为0后,如何将这些负面排名放在列表的末尾?将列切换到sql\u attr\u bigint解决了这个问题 字段v_评级是否在配置文件中定义为sq
我陷入了僵局,可能有一个简单的解决办法,但我看不到。到目前为止,我已经完成了Sphinx文档中的所有工作,但是当我在PuTTy中使用test.php测试搜索时,它返回的结果为零
我已经在sphinx.conf中输入了所有正确的数据库信息,并组装了SQL查询。我没有收到任何错误,只是它说每次我搜索时都返回0个结果
它在看我的数据库吗?如果您需要查看任何代码,请告诉我。searchd正在运行(据我所知)。确保indexer——所有这些都显示它找到并索引了实际文档
除了API之外,还有另一种使用Sph
我的数据库里有三张桌子
组织机构
|id |名称|属性| 1 |属性| 2|
文档
|id |组织| id |内容|
人
|id |组织| id |名称|状态|
组织机构和文档之间的关系为1:1。组织只能有一个文档
组织和人之间的关系为1:n。组织可能有很多人
表文档约有1200000条记录,占用磁盘500 Gb以上。表中的记录永远不会更改
表组织机构有大约3000000条记录,但仅占用8 Gb的磁盘空间。表中的记录经常更改,因此我需要完全重新编制索引
以下是我的索引:
source organ
请帮助我使用扩展搜索模式进行sphinx搜索-我需要从“今天是父亲节”文本中查找“父亲节”查询字符串。搜索时,此文本被忽略,因为其中只有一个引号。有什么方法可以检索此信息吗?如果真的谈论父亲的,(即父亲的只是你文章中的一个输入错误);一种可能性是在ignore\u chars
在索引过程中,它将“消失”,因此今天是父亲节将被简单地索引为今天是父亲节
真正处理父亲的是一个更棘手的问题。可能用regexp\u过滤器来修复它
regexp_filter = (\w)s's\b => \1s
几个月前我安装了一个sphinx搜索引擎,随着时间的推移,我不记得我安装的sphinx版本了
如何检查我的系统sphinx版本 可以只运行命令searchd,不带任何参数
当我刚刚尝试时,它显示了以下内容
Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-20009, Andrew Aksyonoff
....
…/sphinx/bin/search
只需执行此操作使用“--help”参数运行searchd,该参数显示searchd版本:
sea
我想将sphinx索引之一迁移到实时。然而,rt索引不接受源代码,它的初始化有点混乱。有没有一种方法可以将现有索引迁移到实时,而无需编写大量脚本?目前还没有正式的方法。只有自定义解决方案。在这个有趣的(PDF)中,有一种方法被提到:
mysqldump -uroot blog users > users_dump.sql
mysql -P9306 < users_dump.sql
mysqldump-uroot blog users>users\u dump.sql
mysql-P
我有一个sphinx实例,配置了两个索引:main和delta。它们都有sql查询范围
在增量索引中,我有一个killlist查询,用于从主索引中删除修改过的项目
此查询的范围是否应与内容查询相同
i、 e
此查询的范围是否应与内容查询相同
不支持。KillList不支持范围查询。它只运行一个查询
顺便说一句,这是:
sql\u query\u range=从文档中选择MINid、MAXid
看起来不对。即从documents表中获取所有ID。但是sql_查询有一个使用SphinxTable中的
我对狮身人面像(以及一般的全文搜索)还不熟悉。
我已经读到,main+delta方案适用于拥有大量不随时间变化的数据和添加的一些新数据的情况
所以我有两个索引。一个主索引和一个RT索引。主索引只需使用一次即可编制索引
>索引器--合并索引\u主索引\u rt--旋转
但是我得到了这个错误
FATAL:未能将索引\u rt合并到索引\u main:源索引预加载失败:未能打开C:\path\to\index\index\rt.sph
(无此类文件或目录)
我猜这是因为实时索引的存储方式与磁盘索引不同
假设我有这样一个表结构:
name | groupId | locationId
我使用SphinxQL的实时索引功能来索引表中的记录,名称为全文,groupId和locationId为rt_attr_uint
我知道我可以使用SphinxQL进行全文搜索,并使用属性过滤结果。因此,例如,我可以搜索名字中有字母Bo的用户,例如Bob,然后过滤结果,只包括groupId=1和locationId=67的记录
但是,我的问题是,如果我只想使用属性过滤记录,而不进行全文搜索,或者我应该恢复到只进行M
我是斯芬克斯研究的新手。但是我学会了配置conf和delta conf
我的怀疑:我最近遇到了一个conf,它在mainconf和deltaconf中都有相同的查询
样本
main_conf:
{
#...
sql_query = select a,b,c from documents group by c
#...
}
delta_conf : main_conf
{
#...
sql_query_killlist = select a from doc
我试过了
SELECT count(*) as count FROM rt_item WHERE MATCH('') AND sale between 1 and 2;
而且有很多争吵。
但斯芬克斯抱怨道
ERROR 1064 (42000): sphinxql: syntax error, unexpected BETWEEN, expecting IN near 'between 1 and 2'
当我试着
SELECT count(*) as count FROM rt_item WH
我得到了一个包含一些数字(ID)的索引列,我需要按给定顺序提取与某些数字完全匹配的行
比如说
“给出包含1、1、25、30的行”
1 1 2 25 26 30 31=>有效
1 1 2 25 26 31 32=>无效
1 1 2 2 2 25 30=>有效
我正在尝试使用1>>1>>2>>2,但它不起作用(我认为是因为它将“1”匹配为单个字符,而不是“单词”)严格顺序运算符是
1 << 1 << 25 << 30
我尝试使用Sphinx(PHP)进行排序,以按价格顺序显示,但当我这样做时,它将在1.75英镑之前显示10英镑,因此我需要像mySQL一样使用ABS
我试过这个:
$s->SetSortMode(SPH_SORT_EXPR,“ABS(显示价格)ASC”)
但它似乎不起作用
有人能帮忙吗?SPH\u排序表达式总是按降序排列。ASC/DESC仅用于扩展模式
若要将其“反转”为acsending,可以将其构建到表达式中
$s->SetSortMode (SPH_SORT_EXPR, "10000
我在斯芬克斯论坛上找到了几个讨论这个问题的帖子:
用于创建数据库连接的My函数:
function createSphinxPdo()
{
try {
$options = [
\PDO::ATTR_EMULATE_PREPARES => true,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION
];
$db
假设我在表中有两条记录:
美国
美利坚合众国
我想搜索
United States of America
作为
我要两张唱片。我想匹配的是最长的字符串匹配,“美利坚合众国”。有没有办法在搜索和后处理中指出这一点?当然,我可以用这两种方法存储wordLength,但我希望我可以告诉Sphinx返回最长的单个匹配。使用索引字段长度让Sphinx自动计算并存储“wordLength”。如果你不把它放在某个地方,斯芬克斯就不能用它了。将它放在属性中允许您按字段长度排序,以首先获得最长的长度。@Ba
1 2 3 4 5 6 ...
下一页 最后一页 共 8 页