Sphinx/使用 SphinxSE:修订间差异
来自站长百科
(→参考来源) |
无编辑摘要 |
||
第5行: | 第5行: | ||
让我们从一个create语句和搜索查询的例子开始: | 让我们从一个create语句和搜索查询的例子开始: | ||
<pre> | |||
CREATE TABLE t1 | CREATE TABLE t1 | ||
第22行: | 第23行: | ||
SELECT * FROM t1 WHERE query='test it;mode=any'; | SELECT * FROM t1 WHERE query='test it;mode=any'; | ||
</pre> | |||
搜索表前三列(字段)的类型必须是INTEGER UNSINGED(或者 BIGINT),INTEGER(或者 BIGINT)和VARCHAR(或者 TEXT),这三列分别对应文档ID,匹配权值和搜索查询。这前三个列的映射关系是固定的,你不能忽略这三列中的任何一个,或者移动其位置,或者改变其类型。搜索查询列必须被索引,其他列必须无索引。列的名字会被忽略,所以可以任意命名。 | 搜索表前三列(字段)的类型必须是INTEGER UNSINGED(或者 BIGINT),INTEGER(或者 BIGINT)和VARCHAR(或者 TEXT),这三列分别对应文档ID,匹配权值和搜索查询。这前三个列的映射关系是固定的,你不能忽略这三列中的任何一个,或者移动其位置,或者改变其类型。搜索查询列必须被索引,其他列必须无索引。列的名字会被忽略,所以可以任意命名。 | ||
第31行: | 第33行: | ||
可以使用字符串参数CONNECTION来指定用这个表搜索时的默认搜索主机、端口号和索引。如果CREATE TABLE中没有使用连接(connection)串,那么默认使用索引名“*”(搜索所有索引)和localhost:9312。连接串的语法如下: | 可以使用字符串参数CONNECTION来指定用这个表搜索时的默认搜索主机、端口号和索引。如果CREATE TABLE中没有使用连接(connection)串,那么默认使用索引名“*”(搜索所有索引)和localhost:9312。连接串的语法如下: | ||
<pre> | |||
CONNECTION="sphinx://HOST:PORT/INDEXNAME" | CONNECTION="sphinx://HOST:PORT/INDEXNAME" | ||
</pre> | |||
默认的连接串也可以日后改变: | 默认的连接串也可以日后改变: | ||
<pre> | |||
ALTER TABLE t1 CONNECTION="sphinx://NEWHOST:NEWPORT/NEWINDEXNAME"; | ALTER TABLE t1 CONNECTION="sphinx://NEWHOST:NEWPORT/NEWINDEXNAME"; | ||
</pre> | |||
也可以在查询中覆盖全部这些选项。 | 也可以在查询中覆盖全部这些选项。 | ||
2011年12月7日 (三) 17:23的最新版本
要通过SphinxSE搜索,您需要建立特殊的ENGINE=SPHINX的“搜索表”,然后使用SELECT语句从中检索,把全文查询放在WHERE子句中。
让我们从一个create语句和搜索查询的例子开始:
CREATE TABLE t1 ( id INTEGER UNSIGNED NOT NULL, weight INTEGER NOT NULL, query VARCHAR(3072) NOT NULL, group_id INTEGER, INDEX(query) ) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312/test"; SELECT * FROM t1 WHERE query='test it;mode=any';
搜索表前三列(字段)的类型必须是INTEGER UNSINGED(或者 BIGINT),INTEGER(或者 BIGINT)和VARCHAR(或者 TEXT),这三列分别对应文档ID,匹配权值和搜索查询。这前三个列的映射关系是固定的,你不能忽略这三列中的任何一个,或者移动其位置,或者改变其类型。搜索查询列必须被索引,其他列必须无索引。列的名字会被忽略,所以可以任意命名。
除此之外,其他列(字段)的类型必须是INTEGER、TIMESTAMP、BIGINT、VARCHAR或者FLOAT之一。它们必须与Sphinx结果集中提供的属性按名称绑定,即它们的名字必须与sphinx.conf中指定的属性名一一对应。如果Sphinx搜索结果中没有某个属性名,该列的值就为NULL.
特殊的“虚拟”属性名也可以与SphinxSE列绑定。但特殊符号@用_sph_代替。例如,要取得@group和@count虚属性,列名应使用_sph_group和_sph_count。
可以使用字符串参数CONNECTION来指定用这个表搜索时的默认搜索主机、端口号和索引。如果CREATE TABLE中没有使用连接(connection)串,那么默认使用索引名“*”(搜索所有索引)和localhost:9312。连接串的语法如下:
CONNECTION="sphinx://HOST:PORT/INDEXNAME"
默认的连接串也可以日后改变:
ALTER TABLE t1 CONNECTION="sphinx://NEWHOST:NEWPORT/NEWINDEXNAME";
也可以在查询中覆盖全部这些选项。