文档章节

sphinx多屬性查找過濾配置

tanjj
 tanjj
发布于 2017/08/25 14:15
字数 407
阅读 17
收藏 0

情景:
有一個商品表goods,一個商品對應多個種類標籤。如下結構:

goods_id  type_ids

 1         1,2,3
 2         2,3,4
 3         3,4,5

當我要查找種類為4的商品id的時候,就要用到sphinx的多屬性配置了。

主要配置如下:

source src1
{
        type                    = mysql
        sql_host                = 127.0.0.1
        sql_user                = search
        sql_pass                =
        sql_db                  = test
        sql_query               = select goods_id,type_ids from goods       

        sql_attr_multi = uint type_ids from field;#配置type_ids為多屬性

        sql_ranged_throttle     = 0
}

然後我們在php中可以這樣搜索過濾了:
$sphinx->setFilter('type_id', array(2,3,4));
是表示含有标签值2,3,4中的任意一个即符合筛选,这里是or关系。

$sphinx->setFilter('type_id', array(2));
$sphinx->setFilter('type_id', array(3));
$sphinx->setFilter('type_id', array(4));
设置三个filter是标示,要同时满足2,3,4三个属性值才符合,这里是and关系。

Sphinx sql_attr_multi配置参考

在Sphinx中,有一个MVA属性,声明格式如下(用反斜线只是为了清晰,您仍可以在一行之内完成声明):
sql_attr_multi = ATTR-TYPE ATTR-NAME ‘from’ SOURCE-TYPE \
[;QUERY] \
[;RANGE-QUERY]
其中
ATTR-TYPE 是 ‘uint’ 或 ‘timestamp’之一
SOURCE-TYPE 是 ‘field’, ‘query’, 或 ‘ranged-query’之一
QUERY 是用来取得全部(文档 ID,属性值)序对的 SQL 查询
RANGE-QUERY 是用来取得文档 ID 的最小值与最大值的 SQL 查询,
与’sql_query_range’类似
示例:
sql_attr_multi = uint tag from field;
sql_attr_multi = uint tag from query; SELECT id, tag FROM tags
sql_attr_multi = uint tag from ranged-query; \
SELECT id, tag FROM tags WHERE id>=$start AND id<=$end; \
SELECT MIN(id), MAX(id) FROM tags
使用field类型时,field字段的值应该是以英文逗号隔开的多个无符号32位整数,如:1,2,3,4
使用query或者ranged-query时,每行一个值,一个id对应多个(多行)tag值

 

© 著作权归作者所有

tanjj
粉丝 18
博文 28
码字总数 29300
作品 0
广州
程序员
私信 提问
描述使用者介面

表達使用者介面講解 我們可以先用前幾章教的方法設定並執行模擬器,看看模擬器運作後的結果: 我們看到一個文字欄位,上面有一串文字 「Hello World, Bmi!」。這就是 Android 預設程式架構的...

JavaGG
2009/09/14
781
0
設計使用者介面(UI)

視圖(View)查閱文件http://developer.android.com/guide/tutorials/views/index.html 軟體設計的過程中,常常會遇到需要頻繁修改使用者介面的情境。改著改著程式設計師們就累積起了一些經驗,...

JavaGG
2009/09/14
2.4K
2
CKEditor4 自動清除內容標籤問題的解決方法

在CKEditor中我們經由配置檔Config.js,可以依照自己的需求去自定編輯器的工具,如下圖:而在CKEditor中CKEDITOR.editor.filter會過濾掉一些沒開放功能的內容,舉例來說:上面這編輯器並沒有...

vvx1024
2015/06/02
238
0
學習 React.js:用 ReactJS 30 分鐘打造一個移動應用

[Make a Mobile App with ReactJS in 30 Minutes][1] Ken Wheeler (@ken_wheeler) React 能讓前端開發者以前所未有的方式來構建應用。它有許多好處:比如單向數據流,簡單的組件生命週期,聲...

开源中国匿名会员
2015/04/22
5.9K
0
Windows Phone 7 - 學習新的Secondary Tile與Application Tile(转载)

之前在說明了可以透過ShellTileSchedule自訂Tile的變化, 然而那個時候討論的都是Application Tile,因為在WP 7.0 SDK裡Tile對於一個Application只會有一個,不管Push notifiaction或 自己S...

junwong
2012/02/24
448
0

没有更多内容

加载失败,请刷新页面

加载更多

02.日志系统:一条SQL更新语句是如何执行的?

我们还是从一个表的一条更新语句说起,我们创建下面一张表: create table T(ID int primary key, c int); 如果要将ID=2这一行c的值加1,SQL可以这么写: update T set c=c+1 where ID=2; 前...

scgaopan
55分钟前
7
0
【五分钟系列】掌握vscode调试技巧

调试前端js 准备一个前端项目 index.html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1......

aoping
56分钟前
4
0
PhotoShop 高级应用:USM锐化/S锐化/防抖

、 高反差锐化+混合模式:叠加模式 【将更多的边缘细节添加到图像中】

东方墨天
今天
7
0
Python数据可视化之matplotlib

常用模块导入 import numpy as npimport matplotlibimport matplotlib.mlab as mlabimport matplotlib.pyplot as pltimport matplotlib.font_manager as fmfrom mpl_toolkits.mplot3d i......

松鼠大帝
昨天
5
0
我用Bash编写了一个扫雷游戏

我在编程教学方面不是专家,但当我想更好掌握某一样东西时,会试着找出让自己乐在其中的方法。比方说,当我想在 shell 编程方面更进一步时,我决定用 Bash 编写一个扫雷游戏来加以练习。 我在...

老孟的Linux私房菜
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部