2016-08-01 35 views
-1

我有一個產品名稱列表[襯衫,鞋子,褲子,帽子,眼鏡] 我試圖執行一個查詢,將使用正則表達式返回產品只要值存在,不區分大小寫並以任何順序。如何在Cypher中亂序查詢多個屬性值

我只能查詢,以便他們 MATCH(產品:產品),其中product.name =〜 「(我)*襯衫」 RETURN產品

我怎麼能查詢它們的順序,即 MATCH(product:Product)WHERE product.name =〜「(?i)。* hat。shirt。」?

謝謝

回答

0

你想用正則表達式搜索什麼?您是否正在查找僅包含列表中某個關鍵字的產品名稱?或多個關鍵字?

如果你只是想找到包含在列表中的關鍵字中的至少一個,你可以使用字符串比較操作CONTAINStoLower()功能一起,使比較不區分大小寫產品名稱:

WITH {products} AS products 
MATCH (p:Product) WHERE any(x IN products WHERE toLower(p.name) CONTAINS toLower(x)) 
RETURN p 

其中{products}是你的產品名稱的數組:['shirt', 'shoes', 'pants', 'hats', 'glasses']

編輯

要查找包含所有關鍵字的產品節點,請使用all()列表謂詞。

例如,假設您想要找到其中名稱中包含「襯衫」和「鞋」的所有產品的節點:

WITH ["shirt", "shoes"] AS keywords 
MATCH (p:Product) WHERE all(x IN keywords WHERE toLower(p.name) CONTAINS toLower(x)) 
RETURN p 
+0

我想搜索的產品名稱爲多個關鍵字。因此,如果我搜索「襯衫和鞋子」,我們需要能夠查看哪些供應商將我們的襯衫和鞋子出售給我們。我瞭解供應商不是這個問題的一部分。 –

相關問題