标签: sphinx

在Sphinx中使用文本/字符串值创建过滤器

我安装了Sphinx Search作为我的搜索引擎,我正在尝试为搜索添加一些额外的功能setFilter(),SetSelect()这应该允许我做WHERE/AND条款.但每当我尝试搜索时,它都不会返回结果而不是结果.

这是我的sphinx.conf:http://pastebin.com/M6Kd71u0

这是PHP代码:

require("sphinxapi.php");

$host = "localhost";
$port = 9312;
$index = "llgenre";
$select1 = "cartoon";
$label6 = "children";
$type = 4;
$limit = 20;
$ranker = SPH_RANK_PROXIMITY_BM25;
$mode = SPH_MATCH_ALL;

$sphinx = new SphinxClient();
$sphinx->setServer($host, $port);
$sphinx->setConnectTimeout(0);
$sphinx->setMatchMode($mode);
$sphinx->setRankingMode($ranker);
$sphinx->setSelect('*, select1="'.$select1.'" AND label6="'.$label6.'" AS mycond');
$sphinx->setFilter('mycond', array(1));

$res = $sphinx->query($type, $index);

die(var_dump($res));
Run Code Online (Sandbox Code Playgroud)

我如何才能通过搜索type = 4,过滤由select1cartoon最后在label6children

php sphinx

8
推荐指数
1
解决办法
5733
查看次数

任何想法为什么思考Sphinx Rake任务没有运行?

我发现当我尝试运行其Rake任务时,Thinking Sphinx有时会出错.有时候任务工作正常,有时我会收到类似下面的错误.

我以普通用户身份运行任务,而不是root用户.不使用sudo.

在下面的示例中,在Rake任务失败后,searchd仍在运行.

我也看到了类似的错误ts:rebuild.

有没有人见过这个?

我正在使用Sphinx 0.9.9发行版(r2117)

我正在使用Thinking Sphinx 1.4.4而不是最新版本,因为我使用的是Rails 2.3.11.


$ rake ts:stop RAILS_ENV=production
(in /var/www/blog_app/releases/20110425053509)
rake aborted!
execution expired

(See full trace by running task with --trace)
[ethan@apphost current]$ rake ts:stop RAILS_ENV=production --trace
(in /var/www/blog_app/releases/20110425053509)
** Invoke ts:stop (first_time)
** Invoke thinking_sphinx:stop (first_time)
** Invoke thinking_sphinx:app_env (first_time)
** Execute thinking_sphinx:app_env
** Invoke environment (first_time)
** Execute environment
** Execute thinking_sphinx:stop
rake aborted!
execution expired
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/1.8/timeout.rb:60
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/thinking-sphinx-1.4.4/lib/thinking_sphinx/tasks.rb:58
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in …
Run Code Online (Sandbox Code Playgroud)

sphinx ruby-on-rails thinking-sphinx

8
推荐指数
2
解决办法
3815
查看次数

Rake任务中止,未定义的思考Sphinx方法'索引'?

我在我的应用程序上安装了Sphinx和Thinking Sphinx 2.0.5,当我不断尝试运行命令时,rake ts:index它给了我这个错误:

rake aborted!
undefined method `indexes' for #<Riddle::Configuration:0x41b57b0>
Run Code Online (Sandbox Code Playgroud)

是在谈论我的Product模特吗?

class Product < ActiveRecord::Base
  attr_accessible :name
  validates_presence_of :name

  define_index do
    indexes :name
  end
end
Run Code Online (Sandbox Code Playgroud)

为什么我得到这个,我该如何解决?

sphinx ruby-on-rails thinking-sphinx ruby-on-rails-3

8
推荐指数
1
解决办法
1669
查看次数

思维狮身人面像无法启动 - "无法启动searchd守护程序"

我尝试在我的服务器上开始思考sphinx,但它不想工作.

我做:

$ rake thinking_sphinx:index && rake thinking_sphinx:start
Run Code Online (Sandbox Code Playgroud)

我得到:

Generating Configuration to /vol/www/apps/ror_tutorial/releases/20120202111730/config/development.sphinx.conf
Sphinx 2.0.3-release (r3043)
Copyright (c) 2001-2011, Andrew Aksyonoff
Copyright (c) 2008-2011, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/vol/www/apps/ror_tutorial/releases/20120202111730/config/development.sphinx.conf'...
indexing index 'micropost_core'...
WARNING: collect_hits: mem_limit=0 kb too low, increasing to 13568 kb
collected 0 docs, 0.0 MB
total 0 docs, 0 bytes
total 0.008 sec, 0 bytes/sec, 0.00 docs/sec
skipping non-plain index 'micropost'...
indexing index 'user_core'...
WARNING: collect_hits: mem_limit=0 kb too low, increasing to 13568 kb
collected …
Run Code Online (Sandbox Code Playgroud)

sphinx thinking-sphinx ruby-on-rails-3.1 ruby-1.9.3

8
推荐指数
2
解决办法
1万
查看次数

斯芬克斯的拼写纠错?

我正准备将基于Sphinx的搜索整合到网站中,但我发现没有内置的拼写纠正支持.

网上的人建议使用pspell或其他第三方库来完成工作,但问题是我要搜索的数据,主要包含"技术"术语,如品牌名称,因此我不认为常见的库将包括他们.

另一方面,Xapian表示根据索引的数据进行拼写纠正支持,这正是我想要的.是否值得使用Xapian?我仍然对我应该使用哪个全文搜索引擎感到困惑:Sphinx似乎相当不错,但缺少Xapian(或者Lucene?)的一些很酷的功能,而后者看起来像社区较少,文档较少.

我想我可以用pspell字典中没有的单词使用自定义单词解决问题,但是我不确定这是否会带来明显的性能损失?我将在一个非常受欢迎的网站上使用搜索系统进行聚光灯搜索(在输入的每个字母上通过ajax单独搜索),因此性能很重要.

理想情况下,我想让一些像品牌这样的领域比普通字典更优先,但我想这并不重要,因为大多数品牌名称与其他词汇截然不同.

关于自定义全文搜索引擎的一般设计的任何建议也是受欢迎的.

谢谢

php lucene full-text-search sphinx

7
推荐指数
2
解决办法
4065
查看次数

搜索技术建议

这更像是一个理论问题,而不是实践.我正在开发一个项目,这是一个非常简单的链接目录.整个模型类似于Dmoz或Yahoo目录,除了每个条目都有一些额外的属性.

我有分层分类法处理所有具有多对多关系的条目,所有条目现在都被分类到这些类别中,一切似乎都正常.现在,如果没有搜索选项,目录有什么用?

以下是关于我的模型的更多细节:每个条目都有标题,描述,URL和一些社交个人资料:YouTube,Twitter,Flickr和其他几个.每个条目都可以附加一个徽标,以及一个隐藏的标记字段.此外,标题和描述以三种不同的语言存储.所以基本上我希望搜索结果为:

  1. 相关(包括分类)
  2. 可能是带徽标的
  3. 可能是100%填写的个人资料

我已经尝试过Sphinx并且目前正在与Lucene合作,但似乎我在理论上没有得到正确的搜索.我希望填充的条目看起来应该高于其他条目,但我无法弄清楚得分.如果在整个描述中只有一个单词匹配,我不希望不相关的条目出现在顶部,因为标题更相关.

所以我的问题是 - 是否有任何书籍,技术或其他搜索引擎(如果Sphinx和Lucene不够好),你会推荐这个问题吗?我不仅希望完全控制搜索结果及其排名,还能为访问者提供正确且相关的信息.

关于酷文章的链接也很受欢迎!

没有,我并不想重建谷歌:)

谢谢 :)

lucene search full-text-search sphinx search-engine

7
推荐指数
2
解决办法
574
查看次数

Zend Lucene还是狮身人面像?

我正在构建一个具有数百万条记录的数据库操作的系统.我在项目的所有部分都使用Zend Framework.我想使用搜索索引技术,但你对此有什么建议吗?我应该使用哪种技术?

提前致谢

php zend-framework sphinx zend-search-lucene

7
推荐指数
2
解决办法
4827
查看次数

MySQL 5.6 InnoDB全文搜索

我意识到MySQL 5.6仍处于测试阶段,但有没有人有使用新的InnoDB FTS引擎的经验?它与Sphinx相比如何?

谢谢杰森

mysql innodb full-text-search sphinx

7
推荐指数
1
解决办法
4472
查看次数

在ruby代码中更新思考sphinx索引

我有应用程序,运行在ubuntu 12.04上,使用nginx +乘客在我的方法中我尝试重建sphinx索引所以:

  def update_sphinx_index
    Rails.application.load_tasks
    Rake::Task['ts:rebuild'].invoke
    redirect_to admin_mainpage_path
  end
Run Code Online (Sandbox Code Playgroud)

我也尝试:

`rake ts:index`
Run Code Online (Sandbox Code Playgroud)

但没有任何事情发生,sphinx指数不会重建.我做错了什么?也许我需要用一些特权或其他东西来做这件事,因为当我做rake ts:在命令终端重建一切都很好,并且索引重建.

ruby sphinx ruby-on-rails thinking-sphinx

7
推荐指数
1
解决办法
882
查看次数

在Sphinx中启用部分单词匹配?

我是Sphinx的新手,我正在尝试正确配置它.我希望允许所有搜索的部分单词匹配,并且不希望用户必须自己键入通配符.

我希望搜索在亚马逊或谷歌上运行,如果你开始输入一个单词,建议就会出现.因此,例如,如果有人输入"x",那么应该出现类似"Xbox"的匹配项.

以下是我目前拥有的索引设置:

min_word_len   = 1
min_prefix_len = 1
prefix_fields = name
charset_type = utf-8
Run Code Online (Sandbox Code Playgroud)

在PHP方面,我正在使用SPH_MATCH_EXTENDED2SPH_SORT_RELEVANCE.无论是什么,我都将排名模式保留为默认模式.当我根据反复试验更改设置时,这些设置似乎提供了最佳搜索结果.

我在这里和其他网站上已经阅读了类似的问题,但答案似乎总是引用enable_star文档所说的不推荐使用的内容.

所以我的问题是,如何在Sphinx中启用部分单词匹配?我应该简单地附加*到用户查询中的每个单词,做这样的事情吗?

$search = str_replace(' ', '* ', trim($search)) + '*';
Run Code Online (Sandbox Code Playgroud)

php sphinx

7
推荐指数
1
解决办法
3348
查看次数