2016-01-22 39 views
0

因爲我經常有說明這個問題下面我想改變,但缺乏一個更好的選擇。什麼是Cassandra Lucene索引的不錯替代方案?

我有兩個疑問,應返回相同的結果。但是第二個查詢返回的結果要少得多,有時候沒有結果。這是2個查詢:

SELECT * FROM statistics WHERE source = 'toutiao' AND timespan = '3'; 
SELECT * FROM statistics WHERE source = 'toutiao' AND timespan = '3' AND text = '{ sort: {fields: [{field: "speed", reverse: true}]}}';. 

我用這個自定義卡桑德拉指數https://github.com/Stratio/cassandra-lucene-index

編輯:

我用卡桑德拉2.2.4.1卡桑德拉-的Lucene索引2.2.4

'文本' 是在我已經建立了索引的表列。

我創建索引的查詢是:

CREATE CUSTOM INDEX statistics_text_idx ON toutiao.statistics (text) USING 'com.stratio.cassandra.lucene.Index' WITH OPTIONS = {'schema': '{ 
      fields : { 
       title: { 
            type : "text", analyzer : "english"}, 
            category : {type:"string"}, 
        genre : {type:"string"}, 
        speed : {type : "integer",sorted : true} 
      } 
    }', ' 
      refresh_seconds': '1'}; 

表的創建語句:

DROP TABLE IF EXISTS statistics; 

CREATE TABLE statistics (
source text, 
timespan text, 
id text, 
title text, 
thumbnail text, 
url text, 
text text, 
created_at timestamp, 
category text, 
category2 text, 
genre text, 
author text, 
reads int, 
likes int, 
comments int, 
shares int, 
speed int, 
PRIMARY KEY (source, timespan, id) 
)WITH CLUSTERING ORDER BY (timespan DESC) AND caching = '{"keys":"ALL", "rows_per_partition":"ALL"}'; 

這是我的數據插入程序:

cluster = Cluster(['localhost']) 
session_statis = cluster.connect(keyspace) 
session_statis.execute('INSERT INTO tablename(col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15) values(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', (value1,value2,value3,value4,value5,value6,value7,value8,value9,value10,value11,value12,value13,value14,value15)) 

感謝您的幫助!

+1

問題在這裏回答(替代Stratio索引):http://stackoverflow.com/questions/34938494/why-does-my-cassandra-lucene-index-not-return-all-results – doanduyhai

回答

1

Doanduyhai已經回答了這個在您的其他線程,但我想我會附和這裏。

當涉及到「搜索」的卡桑德拉的數據,你有幾種選擇,它依賴於一些東西,如SLA的,易於使用的,免費VS.支付等Stratio絕對是一個有趣的開源選項 - 不知道從哪裏你的問題,從幹,但我還沒有看到它在生產中(我敢肯定,人們都在使用它,只是還沒有看到它)

至於替代品,您基本上有兩種選擇:

Option 1 - roll your own established Lucene based search API. 

您在這裏的選擇是ElasticSearch或Solr。兩者都提供他們自己的優勢並擁有開源選項。這裏的挑戰是,你將不得不管理一個單獨的集羣和卡桑德拉或雙寫任何ETL數據。在這種情況下,您有更多的靈活性,因爲如果您有很多系統,這可以充當通用搜索羣集。這並不意味着你必須管理的故障情況自己(如腦裂問題),你失去的CQL Lucene的集成。

Option 2 - Go the enterprise route (disclaimer: I work for DataStax) 

DataStax Enterprise具有相當不錯的集成搜索選項。 Solr的共享相同的JVM卡桑德拉其允許卡桑德拉數據立即被編入索引並利用卡桑德拉可用性優勢。還有,恰好使搜索更高效一些很酷的查詢路由。參見:DSE Search。這顯然是一個支付選項 - 雖然自由開發使用。

I lied, there is an option 3 - Build your own Lucene based search solution :) 

這個選項顯然是耗時和資源密集型的大部分時間,但如果你成功了,你會得到所有的女人,酒和錢,你所能想。也許。

4

我想我知道你在做什麼不好,

是「文」在你所建索引的表列???

你能在這裏發表你的cassandra版本,cassandra-lucene-index版本和你的索引創建查詢嗎?

(聲明:我在Stratio工作:))

+0

謝謝你的回覆。我在上面的帖子中的編輯部分添加了您請求的信息。如果你能幫忙,會很棒! – peter

+2

對不起,但我需要更多的信息才能夠重現這一點。你可以請[github](https://github.com/Stratio/cassandra-lucene-index/issues)與表創建查詢和一些插入打開一個問題? –

+0

我添加了上面的創建查詢表。期待您的反饋。謝謝 – peter

1

您所查詢的快速檢測,添加Kibana,麋鹿堆棧會產生你要完成的功能的一部分,並生成elasticsearch /符合你的要求的Lucene代碼。你的es需要匹配你所下載的任何Kibana版本:2015年12月的Kibana最新版本,我必須從es2到2.1來匹配當前的Kibana。由於es現在有2.2的味道,Kibana也可能升級。啊...只是檢查了你...... Kibana在4.4需要es 2.2 ...所以推出發生得很快。

https://www.elastic.co/downloads/kibana

披露:我主要是gptext,馬德利布和PLR,但我喜歡上課...... :) gptext會更類似於SQL的......類似你有什麼...以上