我正在尝试调查sphinx rt索引以便在将来的项目中使用,并对它们有一些疑问。
我找到的唯一方法是使用sphinxQL mysql_connect()
和mysql_query()
。
答案 0 :(得分:1)
我在sphinxsearch论坛上问了这个问题并收到了这个回复:
您好。
barryhunter刚回复'RT index wildcard search':
===切===
1.Is there any way to make wildcard search in sphinx rt indexes?
我不相信 - 尚未实施。检查错误跟踪器,如果没有将其添加为功能请求。
2.How can I query rt index with sphinx client api for php?
是的,Sphinx API可以查询RT索引(它只是无法更新它们)
(但是因为RT索引没有索引前缀/中缀(通配符搜索所需)它不会给你带来任何好处。一切都可以用sphinx API完成,现在我可以用sphinxQL来完成)
===切===
答案 1 :(得分:0)
1.。)要在模型中配置通配符和模糊搜索,首先在define_index块中设置enable_star和min_infix_len属性:
class Post...
define_index do
...
set_property :enable_star => true
set_property :min_infix_len => 1
end
您可以选择通过将设置添加到config / sphinx.yml来设置全局:
production:
enable_star: true
min_infix_len: 1
停止,配置,重新索引并启动Sphinx 为了让Sphinx接受我们需要停止,配置,重新索引和启动Sphinx的更改。 思考Sphinx有一些rake任务可以让你这样做:
RAILS_ENV=xxx
rake ts:stop
rake ts:conf
rake ts:in
rake ts:start
验证Sphinx配置 现在在编辑器中打开Sphinx配置文件:
$ vim config/production.sphinx.conf
确认您可以看到正确的设置:
...
index post_core
{
...
min_infix_len = 1
enable_star = true
}
...
启动控制台并运行一些查询:
Post.search('xxx', :star => true)
现在,剩下的就是创建搜索控制器并查看:
class SearchController...
def index
@query = params[:query]
options = {
:page => params[:page], :per_page => params[:per_page], :star => true,
:field_weights => { :title => 20, :tags => 10, :body => 5 }
}
@posts = Post.search(@query, options)
end
注意:要获得相关的搜索结果,您需要为字段指定不同的权重。
最后,这是在视图代码中发布搜索结果的前端php:
<% @posts.each do |post| %>
content goes here...
<% end %>
2。)这是一个用sphinx客户端api为php查询rt索引的例子:
include('include/sphinxapi.php');
$_longitude = '42.358431';
$_latitude = '-71.059773';
$search = new SphinxClient();
$search->SetServer('[SERVER IP REMOVED]', 9312);
$search->SetConnectTimeout(1);
$search->SetArrayResult(true);
$search->SetMatchMode(SPH_MATCH_ALL);
$search->SetGeoAnchor('venue_latitude', 'venue_longitude', (float)deg2rad($_latitude), (float)deg2rad($_longitude));
$search->SetSelect('*');
$search->SetLimits(0, 100);
$result = $search->Query('b', 'rt_deals');
# results, print_r($result):
Array
(
[error] =>
[warning] =>
[status] => 0
[fields] => Array
(
[0] => deal_types
)
[attrs] => Array
(
[venue_id] => 1
[venue_latitude] => 5
[venue_longitude] => 5
[dt_start] => 2
[dt_end] => 2
[@geodist] => 5
)
[matches] => Array
(
[0] => Array
(
[id] => 45
[weight] => 1
[attrs] => Array
(
[venue_id] => 42
[venue_latitude] => 0.73878991603851
[venue_longitude] => -1.2425578832626
[dt_start] => 0
[dt_end] => 0
[@geodist] => 15278498
)
)
[1] => Array
(
[id] => 46
[weight] => 1
[attrs] => Array
(
[venue_id] => 41
[venue_latitude] => 0.73908978700638
[venue_longitude] => -1.2415384054184
[dt_start] => 0
[dt_end] => 0
[@geodist] => 15278115
)
)
)
[total] => 2
[total_found] => 2
[time] => 0.000
[words] => Array
(
[b] => Array
(
[docs] => 2
[hits] => 2
)
)
)
有关详情,请查看God-Object.com的GeoSpatial Search Using Sphinx Search w/ Php的完整示例代码