我安装了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,过滤由select1与cartoon最后在label6用children?
我发现当我尝试运行其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和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,但它不想工作.
我做:
$ 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的搜索整合到网站中,但我发现没有内置的拼写纠正支持.
网上的人建议使用pspell或其他第三方库来完成工作,但问题是我要搜索的数据,主要包含"技术"术语,如品牌名称,因此我不认为常见的库将包括他们.
另一方面,Xapian表示根据索引的数据进行拼写纠正支持,这正是我想要的.是否值得使用Xapian?我仍然对我应该使用哪个全文搜索引擎感到困惑:Sphinx似乎相当不错,但缺少Xapian(或者Lucene?)的一些很酷的功能,而后者看起来像社区较少,文档较少.
我想我可以用pspell字典中没有的单词使用自定义单词解决问题,但是我不确定这是否会带来明显的性能损失?我将在一个非常受欢迎的网站上使用搜索系统进行聚光灯搜索(在输入的每个字母上通过ajax单独搜索),因此性能很重要.
理想情况下,我想让一些像品牌这样的领域比普通字典更优先,但我想这并不重要,因为大多数品牌名称与其他词汇截然不同.
关于自定义全文搜索引擎的一般设计的任何建议也是受欢迎的.
谢谢
这更像是一个理论问题,而不是实践.我正在开发一个项目,这是一个非常简单的链接目录.整个模型类似于Dmoz或Yahoo目录,除了每个条目都有一些额外的属性.
我有分层分类法处理所有具有多对多关系的条目,所有条目现在都被分类到这些类别中,一切似乎都正常.现在,如果没有搜索选项,目录有什么用?
以下是关于我的模型的更多细节:每个条目都有标题,描述,URL和一些社交个人资料:YouTube,Twitter,Flickr和其他几个.每个条目都可以附加一个徽标,以及一个隐藏的标记字段.此外,标题和描述以三种不同的语言存储.所以基本上我希望搜索结果为:
我已经尝试过Sphinx并且目前正在与Lucene合作,但似乎我在理论上没有得到正确的搜索.我希望填充的条目看起来应该高于其他条目,但我无法弄清楚得分.如果在整个描述中只有一个单词匹配,我不希望不相关的条目出现在顶部,因为标题更相关.
所以我的问题是 - 是否有任何书籍,技术或其他搜索引擎(如果Sphinx和Lucene不够好),你会推荐这个问题吗?我不仅希望完全控制搜索结果及其排名,还能为访问者提供正确且相关的信息.
关于酷文章的链接也很受欢迎!
并没有,我并不想重建谷歌:)
谢谢 :)
我正在构建一个具有数百万条记录的数据库操作的系统.我在项目的所有部分都使用Zend Framework.我想使用搜索索引技术,但你对此有什么建议吗?我应该使用哪种技术?
提前致谢
我意识到MySQL 5.6仍处于测试阶段,但有没有人有使用新的InnoDB FTS引擎的经验?它与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:在命令终端重建一切都很好,并且索引重建.
我是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_EXTENDED2和SPH_SORT_RELEVANCE.无论是什么,我都将排名模式保留为默认模式.当我根据反复试验更改设置时,这些设置似乎提供了最佳搜索结果.
我在这里和其他网站上已经阅读了类似的问题,但答案似乎总是引用enable_star文档所说的不推荐使用的内容.
所以我的问题是,如何在Sphinx中启用部分单词匹配?我应该简单地附加*到用户查询中的每个单词,做这样的事情吗?
$search = str_replace(' ', '* ', trim($search)) + '*';
Run Code Online (Sandbox Code Playgroud)