创建空索引
SELECT * FROM gptext.create_index('public','gptextindex2','id','name'); //name默认搜索域,id是唯一主键
SELECT * FROM gptext.create_index('public','gptextindex2','id','name',false); //可以设置相同的id
创建空索引可以指定索引类型
SELECT * FROM gptext.create_index('wikipedia', 'articles', '{id, title, content, refs}', '{long, text_intl, text_intl, text_intl}', 'id', 'content', true);
查询索引状态
gptext-state -D //验证索引已经创建
自定义索引
gptext-config edit -i testGP.public.gptextindex2 -f managed-schema -e vim
-i 指定修改的索引名
-f 修改的文件名
-e 打开文件的方式(可选)
填充索引
SELECT * FROM gptext.index(TABLE(SELECT * FROM "public".gptextindex2),'testGP.public.gptextindex2');
提交索引
SELECT * FROM gptext.commit_index('testGP.public.gptextindex2');
优化索引(将所有段合并为少量段,以提高效率)
SELECT * FROM gptext.optimize_index('demo.wikipedia.articles', 10);
删除索引
SELECT * FROM gptext.delete('demo.wikipedia.articles', 'toxin');//本示例删除"toxin"默认搜索字段中包含的所有文档
SELECT * FROM gptext.delete('demo.wikipedia.articles', '*:*');//从索引中删除所有文档
SELECT * FROM gptext.commit_index('demo.wikipedia.articles');//提交
SELECT * FROM gptext.drop_index('demo.wikipedia.articles');//完全删除索引
将字段添加到索引
ALTER TABLE myarticles ADD notes text; //向数据库添加字段
SELECT * FROM gptext.add_field('demo.wikipedia.myarticles', 'notes', false, false);//添加solr的field
SELECT * FROM gptext.reload_index('demo.wikipedia.myarticles');//从新加载索引
从索引删除字段
SELECT * FROM gptext.drop_field('demo.wikipedia.myarticles', 'notes');
SELECT * FROM gptext.reload_index('demo.wikipedia.myarticles');
列出所有索引
gptext-state -D
从GPText索引添加和删除分区
SELECT * FROM gptext.partition_status('demo.twitter.message'); 查看数据库分区
SELECT * FROM gptext.index(TABLE(SELECT * FROM twitter.message_1_prt_dec2011), 'demo.twitter.message'); 从新分区添加索引到gptext
SELECT * FROM gptext.commit_index('demo.twitter.message'); 提交
SELECT * FROM gptext.delete('demo.twitter.message', '__partition:message_1_prt_dec2011'); 删除
查询默认字段(name)
SELECT * FROM gptext.search(TABLE(SELECT 1 SCATTER BY 1), 'testGP.public.gptextindex2','廖说', null,'rows=2') ORDER BY score desc;
关联查询
SELECT a.id,a.name,q.score FROM gptextindex2 a, gptext.search(TABLE(SELECT 1 SCATTER BY 1), 'testGP.public.gptextindex2',
'曹魏柏', null,'rows=2') q WHERE a.id_seq = q.id_seq;
查询union域
SELECT * FROM gptext.search(TABLE(SELECT 1 SCATTER BY 1), 'testGP.public.gptextindex2',
'union:女', null,'fl=id,name,address');
AND搜索示例 rows=5 最多返回10条
SELECT a.id, a.date_time, a.title, q.score
FROM wikipedia.articles a,
gptext.search(TABLE(SELECT 1 SCATTER BY 1), 'demo.wikipedia.articles',
'solar AND battery', null, 'rows=5') q
WHERE q.id::int8 = a.id
ORDER BY score DESC;
OR搜索示例 rows=5 最多返回10条
SELECT a.id, a.date_time, a.title, q.score
FROM wikipedia.articles a,
gptext.search(TABLE(SELECT 1 SCATTER BY 1), 'demo.wikipedia.articles',
'solar OR battery', null, 'rows=5') q
WHERE q.id::int8 = a.id
ORDER BY score DESC;
搜索非默认字段
SELECT a.id, a.date_time, a.title, q.score
FROM wikipedia.articles a,
gptext.search(TABLE(SELECT 1 SCATTER BY 1), 'demo.wikipedia.articles',
'title:solar', null, null) q
WHERE q.id::int8 = a.id
ORDER BY score DESC;
OR和and和在一起使用
SELECT a.id, a.date_time, a.title, q.score
FROM wikipedia.articles a,
gptext.search(TABLE(SELECT 1 SCATTER BY 1), 'demo.wikipedia.articles',
'title:(solar AND (power OR energy))', null, null) q
WHERE q.id::int8 = a.id;
示例搜索content列中具有“光合作用” 但列中没有“太阳能”的文章title
SELECT a.id, a.date_time, a.title, q.score
FROM wikipedia.articles a,
gptext.search(TABLE(SELECT 1 SCATTER BY 1), 'demo.wikipedia.articles',
'photosynthesis and -title:solar', null, null) q
WHERE q.id::int8 = a.id
ORDER BY score DESC;
过滤搜索结果
示例查找在content列中具有“核”一词的文章,然后应用两个过滤器查询以删除在title列中具有“太阳能”的文章和在列中没有“ power”的文章title
切面 gptext.faceted_field_search() 聚类
SELECT * FROM gptext.faceted_field_search(
'demo.store.products', '*:*', 过滤查询, '{聚类字段}', (任何一个类别要报告的最大结果数,-1所有结果), (类别必须包含在结果中的最小结果数));
SELECT * FROM gptext.faceted_field_search(
'demo.store.products', '*:*', null, '{category}', -1, 1);
SELECT * FROM gptext.faceted_field_search(
'demo.store.products', '*:*', '{category:Desktops}', '{brand}', -1, 1);
面向搜索查询faceted_query_search()
示例报告在默认搜索列(title)中包含“ windows”,“ intel”以及“ windows”和“ intel”的文档数
SELECT * FROM gptext.faceted_query_search(
'demo.store.products', '*:*', null,
'{windows, intel, windows AND intel}');
query_name | value_count
-------------------+-------------
intel | 7
windows | 4
windows AND intel | 2
示例中的方面查询是Solr范围查询,该查询在price字段上定义了四个自定义范围。
SELECT * FROM gptext.faceted_query_search(
'demo.store.products', '*:*', null,
'{price:[* TO 200],price:[201 TO 250],price:[251 TO 300],price:[301 TO *]}');
query_name | value_count
--------------------+-------------
price:[201 TO 250] | 2
price:[251 TO 300] | 2
price:[301 TO *] | 11
price:[* TO 200] | 35
在范围上刻面gptext.faceted_range_search()
此范围搜索示例将价格字段分为0到1200之间的范围(间隔为100)。range_value结果中的列是文本值,因此该ORDER BY子句将值强制转换为浮点类型。
SELECT * from gptext.faceted_range_search(
'demo.store.products', '*:*', null, 'price', '0', '1200', '100')
ORDER BY range_value::float;
field_name | range_value | value_count
------------+-------------+-------------
price | 0.0 | 23
price | 100.0 | 12
price | 200.0 | 4
price | 300.0 | 6
price | 400.0 | 0
price | 500.0 | 1
price | 600.0 | 1
price | 700.0 | 1
price | 800.0 | 0
price | 900.0 | 1
price | 1000.0 | 0
price | 1100.0 | 1
高亮
只索引未存储
如果该字段已建立索引但未存储,则必须将搜索结果与数据库表结合在一起,并使用该gptext.highlight()功能将标记标签应用于列数据
建立索引并存储
如果对该字段建立索引并存储,Solr可以应用标记标签并在搜索查询的结果中返回标记的字段。这与突出显示GPText外部索引的方式相同。(请参阅突出显示外部索引搜索结果。)将此方法与常规GPText索引一起使用,需要修改索引的solrconfig.xml配置文件。
查询解析器
SELECT a.title, q.score
FROM wikipedia.articles a,gptext.search(TABLE(SELECT 1 SCATTER BY 1),'demo.wikipedia.articles', '+hydroelectric -solar', null, 'defType=dismax') q
WHERE a.id = q.id::int8;
使用DisMax和扩展DisMax查询解析器
select * FROM gptext.search (TABLE(SELECT 1 SCATTER BY 1), 'testGP.public.gptextindex4', '{!edismax qf="name"} 于', null, 'fl=*')
函数
返回匹配的文档数
SELECT * FROM gptext.search_count('demo.wikipedia.articles', 'bubble', null);
创建外部表(日志检索)首先需要登录
SELECT gptext.external_login('s3', 's3://s3-us-west-2.amazonaws.com', 'mys3_auth');
SELECT * FROM gptext.create_index_external('gptext-docs');
SELECT * FROM gptext.index_external('{http://gptext.docs.pivotal.io/archives/GPText-docs-213.pdf}','gptext-docs');
每个段返回5行,并在message_text列中突出显示文本“ iphone” 高亮
SELECT t.id,
gptext.highlight(t.message_text, 'message_text', s.hs) message
FROM twitter.message t,
gptext.search(TABLE(SELECT 1 SCATTER BY 1),
'demo.twitter.message','{!gptextqp}iphone', null,
'rows=5&hl=true&hl.fl=message_text' ) s
WHERE t.id = s.id::int8;
时间间隔搜索
方面的日期范围为2011年8月1日午夜至2011年11月1日午夜,间隔为7天。
SELECT *
FROM gptext.faceted_range_search('demo.twitter.message', '*:*', null,
'created_at', '2011-08-01T00:00:00Z',
'2011-11-01T00:00:00Z', '+7DAY');
查询所有collection的doc数
SELECT * FROM gptext.index_size();
每个索引的document数
SELECT * FROM gptext.index_size('demo.wikipedia.articles');
zookeper 操作 添加文件
将本地文件附加/home/gpadmin/stopwords.add到顶级ZooKeeper文件stopwords.txt以获取索引demo.wikipedia.articles:
SELECT * FROM gptext.config_append('demo.wikipedia.articles', '/home/gpadmin/stopwords.add', 'stopwords.txt');
从ZooKeeper删除索引配置文件。
select * from gptext.config_delete('demo.wikipedia.articles', 'stopwords.add');
显示ZooKeeper索引配置文件的内容。 gptext.config_get()
select * from gptext.config_get('demo.wikipedia.articles', 'synonyms.txt')
列出索引的ZooKeeper配置文件和目录。gptext.config_list()
select * from gptext.config_list('demo.wikipedia.articles', boolean) boolean可选的,是否一递归方式列出可选目录
select * from gptext.config_list('demo.wikipedia.articles', false)
在ZooKeeper lang子目录中列出以下的ZooKeeper配置文件
select * from gptext.config_list('demo.wikipedia.articles', 'lang', false);
将索引配置文件上载到ZooKeeper,以替换任何现有的同名文件 gptext.config_upload()
将本地文件上传/home/gpadmin/stopwords.txt到ZooKeeper,覆盖stopwords.txt索引的现有文件demo.wikipedia.articles
select * from gptext.config_upload('demo.wikipedia.articles', '/home/gpadmin/stopwords.txt');
将本地文件上传/home/gpadmin/stopwords_japanese.txt到ZooKeeper,覆盖lang/stopwords_ja.txt索引文件demo.wikipedia.articles
select * from gptext.config_upload('demo.wikipedia.articles', '/home/gpadmin/stopwords_japanese.txt', 'lang/stopwords_ja.txt');
显示在配置中为指定索引定义的字段类型的分析器链。gptext.get_field_type()
SELECT gptext.get_field_type('demo.wikipedia.articles', 'text');
重新加载Solr配置文件(如果已修改)。 gptext.reload_index()
SELECT * FROM gptext.reload_index('demo.wikipedia.articles');
计算表中的记录数。gptext.count_t()
SELECT * FROM gptext.count_t('demo.wikipedia.articles');