2014-03-05 40 views
0

我有一個紅寶石項目,其中部分操作是選擇給定用戶指定約束條件的實體。到目前爲止,我一直在使用我自己的過濾器語言,使用正則表達式並根據實體中的字段指定包含/排除。一個簡單的過濾語言,可以嵌入到紅寶石?

如果你有興趣在我目前的做法,這裏有一個例子:例如,給定的實體名單:

[{"type":"dog", "name":"joe"}, {"type":"dog", "name":"fuzz"}, {"type":"cat", "name":"meow"}]

用戶可以指定像這樣的過濾器:

{"filter":{ "type":{"included":["dog"] }, "name":{"excluded":["^f.*"] } }}

會匹配所有的狗,但不包括絨毛。

這是現在的工作。但是,我開始需要更復雜的選擇參數。我在想,不是繼續破解我自己的過濾語言,可能會有更通用的過濾語言,我可以將其嵌入到我的應用程序中?例如,是否有解析器可以使用SQL where子句進行應用程序內過濾?或者還有其他一些我不知道的通用簡單過濾語言?我特別想從正則表達式中移除,因爲我想對數字進行範圍查詢(如實體[「size」] < 50?)

+0

一些谷歌搜索後,我發現了C#中的LINQ,它可能具有ruby等價物:http://msdn.microsoft.com/en-us/library/bb308959.aspx –

回答

0

最後,我終於實現了一個ruby dsl。它很簡單,有趣,而且功能強大。

0

這是一個推斷的一點點,但我認爲你可以可能正在尋找一個搜索引擎,或者至少有一個,你可以使用一個僅用於查詢語言。

如果是這樣,你可能想看看elasticsearch,它有Ruby客戶端綁定,而可能非常適合你正在嘗試做的事情。特別是如果您想要或需要將您希望搜索的數據表示爲JSON以供客戶端代碼使用,則該格式本來就是由搜索引擎支持的。

查詢語言非常具有表現力,並且有多種內置和插件工具可用於探索和使用它。