标签: sphinx

Solr vs. Sphinx用于空间搜索

我的任务是选择我们即将在即将开展的项目中使用的全文搜索引擎.基于我所读到的,我倾向于Solr,但我有点担心空间搜索.除了一些其他参数(关键字,类别等),我们希望能够指定位置和最大距离(例如,在距离亚利桑那州坦佩25英里的范围内).我们希望能够按距离对结果进行排序.

空间SOLR显然是相当新的,并不完全清楚它的成熟度.还有一些其他选项(手动计算然后反转距离,或solr-spatial-light.

我的问题基本上是:Spatial Solr(或solr-spatial-light)是否足够准备黄金时段来处理我上面描述的情况,或者我们最好不要使用Sphinx?

我也有兴趣听听实现其中任何一个的一般经验,特别是php.

php solr sphinx spatial

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

SQL - 仅为每种类型提供3次点击

我有一些不可能的要求:).

我有一个表,其中一个列被命名type.我想为该列中的每种类型选择3条记录.那可能吗?

另请注意,我正在使用MySQL和Sphinx.

更新:表结构

id       title        type
1        AAAA         string1
2        CCCC         string2
3        EEEE         string2
4        DDDD         string2
5        FFFF         string2
6        BBBB         string2
6        BBBB         string2
Run Code Online (Sandbox Code Playgroud)

我希望MySQL返回的是(按标题排序的每种类型最多3条记录):

id       title        type
1        AAAA         string1
6        BBBB         string2
2        CCCC         string2
4        DDDD         string2
Run Code Online (Sandbox Code Playgroud)

mysql sql sphinx greatest-n-per-group

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


如何在Sphinx上查询完全匹配的词组?

似乎Sphinx正在逐字搜索文档.我不知道如何在文档中搜索确切的短语.我试过了SPH_MATCH_ALL,SPH_MATCH_PHRASE但所有人都是逐字搜索文件.我在我的PHP应用程序中使用它.

如何查询Sphinx以匹配精确的字符串?

这是我的代码:

$sphinx = new SphinxClient();
$mode = SPH_MATCH_PHRASE;
$sphinx->setServer('127.0.0.1', 9312);
$sphinx->setLimits(0,1);
$sphinx->setMaxQueryTime(5000);
$sphinx->setMatchMode($mode);
$sphinx->setFieldWeights(array('name' => 100));
$sphinx->setArrayResult(true);

$result = $sphinx->query('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
print_r($result);
Run Code Online (Sandbox Code Playgroud)

返回结果如下:

Array (
    [error] =>
    [warning] =>
    [status] => 0
    [fields] => Array (
        [0] => name
        [1] => company
        [2] => image
        [3] => price
    )
    [attrs] => Array ()
    [total] => 0
    [total_found] => 0
    [time] => 0.000
    [words] => Array (
        [lorem] => …
Run Code Online (Sandbox Code Playgroud)

php sphinx

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

在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
查看次数

在Lucene/Solr,飞快移动,狮身人面像,Xapian中最好地融合了蟒蛇?

我是初创公司的新手编码器,我正在网络主机的目录中实现文档搜索.

我正在比较Lucene/Solr,飞快移动,狮身人面像和Xapian.飞快移动本身就是蟒蛇.但我也想要你的意见.其中有哪些

  • 成熟且易于使用并安装python接口?(嗖的一声)
  • 没有崩溃,瓶颈和其他失败的机会
  • 最好的文档界面(我不读PHP文档,因为python文档很稀疏)
  • 最容易起床和跑步(只有一个有快速入门教程)

python solr full-text-search sphinx whoosh

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

对于Unix目录结构,快速,按行"grep -n"等效

我正在尝试创建一个Web界面来搜索大量的大型配置文件(大约60000个文件,每个文件的大小在20 KB到50 MB之间).这些文件也经常更新(约3次/天).

要求:

  • 并发
  • 必须标识每个匹配行的行号
  • 良好的更新性能

我所研究的内容:

  • Lucene:要识别行号,每行必须存储在单独的Lucene文档中,每个文档包含两个字段(行号和行).这使得更新变得困难/缓慢.
  • SOLRSphinx:两者都基于Lucene,他们有同样的问题,不允许识别行号.
  • 带有全文索引的SQL表:再次,无法显示行号.
  • SQL表与每行在一个单独的行中:使用SQLite或MySQL进行测试,更新性能是所有选项中最差的.更新50 MB文档花了一个多小时.
  • eXist-db:我们将每个文本文件转换为XML,如下所示:<xml><line number="1">test</line>...</xml>.更新需要大约5分钟,这有点奏效,但我们仍然不满意.
  • 飞快移动 Python:非常像Lucene.我已经实现了一个原型,通过删除/重新导入给定文件的所有行来进行排序.使用此方法更新50MB文档大约需要2-3分钟.
  • GNU id utils:由sarnold推荐,这是非常快的(50MB文档在我的测试机器上不到10秒更新)并且如果它具有分页和API将是完美的.

你会如何实现替代方案?

python lucene indexing search sphinx

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

如何擦除Sphinx中的实时索引?

我想使用实时索引作为当前变化的即时可用增量,因此需要每晚擦除.有没有一种很好的方法可以从RT索引中删除所有文档?我想我可以从中选择所有内容并DELETE为每个找到的id 发出一个,但这似乎不是一个明智的方法.

sphinx

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

mysql2的未定义方法`next_result'(rails 3)

我曾经使用该软件的第二个版本,没有任何问题.在我的上一次申请中,我决定使用最新的"思考 - 狮身人面像".我有一个奇怪的错误.

> NoMethodError in Adverts#index undefined method `next_result' for
> #<Mysql2::Client:0xac86a54>
Run Code Online (Sandbox Code Playgroud)

我的宝石文件

    gem 'rails', '3.2.11'
    gem 'pg', '0.14.0'  # My database

# for sphinx
                gem "mysql2", "~> 0.3.11"
                gem "thinking-sphinx", "~> 3.0.0"
Run Code Online (Sandbox Code Playgroud)

索引:

ThinkingSphinx::Index.define :car, :with => :active_record do
   has user_id, model_id, city_id, area_id, engine_id, mileage
  end
Run Code Online (Sandbox Code Playgroud)

thinking_sphinx.yml

    development:
      port: 9312
    test:
      port: 9313
    production:
      port: 9312
Run Code Online (Sandbox Code Playgroud)

控制器:

class AdvertsController < ApplicationController
  def index
    @cars = Car.by_model_id(@model_id)
  end
end
Run Code Online (Sandbox Code Playgroud)

模型:

class Car < ActiveRecord::Base
    include ThinkingSphinx::Scopes

    sphinx_scope(:by_model_id) { …
Run Code Online (Sandbox Code Playgroud)

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

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

如何改善Sphinx中句子的检测?

可以使用Sphinx在一个句子中搜索单词.例如,我们有下一个文字:

Васямолодец,съелогурец,т.к.проголодался.Такиедела.

如果我搜索

??????? SENTENCE ??????
Run Code Online (Sandbox Code Playgroud)

我找到了这个文字.如果我搜索

??????? SENTENCE ????????????
Run Code Online (Sandbox Code Playgroud)

我找不到这个文字,因为短语中的点?.?.被视为句末.

我怎么看,一组分隔符在Sphinx的源代码中是硬编码.

我的问题是如何改善判刑的检测?更好的方法是使用Yandex的Tomita解析器或另一个nlp库,智能检测句子.

full-text-search sphinx full-text-indexing

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