2012-11-29 3 views
5

Tôi muốn sử dụng auto_index của mình trong neo4j và chuyển vào một chuỗi các chuỗi để khớp với. Tôi biết rằng bạn có thể thêm mệnh đề IN vào cuối truy vấn cypher của bạn nhưng điều đó không sử dụng các chỉ mục và tôi giả sử sẽ thực hiện quét cơ sở dữ liệu của tất cả các bản ghi. Cách tốt nhất để làm điều này với một truy vấn chỉ mục là gì?truy vấn với mệnh đề "IN" bằng chỉ mục trong neo4j với Cypher

ví dụ: Đưa người dùng có facebookId vào ["123", "456", "789"] giả sử có auto_index trên facebookId và có 1 triệu nút người dùng.

Trả lời

11

Tôi cho rằng đây là giá trị đăng như một câu trả lời:

START n=node:node_auto_index('facebookId:("123", "456", "789")') 
... 

Ví dụ: http://console.neo4j.org/r/3mcvr5

+0

cảm ơn, điều đó đã làm được điều đó. – MonkeyBonkey

+0

Đối với hồ sơ, giới hạn ở 512 trường với Neo 1.9.M04 hiện tại. (mà tôi nghĩ sử dụng Lucene 3.5) –

+0

Cảm ơn, điều này đã giúp tôi – jarandaf

1

Bạn sẽ làm truy vấn này bằng cách có một tra cứu chỉ số rõ ràng, giống như

start user = node:node_auto_index('facebookId:123 OR facebookId:456') match ... 

http://console.neo4j.org/r/nj98lt cho một ví dụ.

+0

Tôi cho rằng điều đó sẽ làm việc, nhưng nó có thể nhận được rất lâu nếu tôi có 20 hoặc 30 ids để phù hợp với chống lại. Không còn cách nào khác để làm điều đó? – MonkeyBonkey

+0

BTW ở đâu tài liệu về những toán tử và tham số nào có thể được truyền trong truy vấn chỉ mục trong cypher? – MonkeyBonkey

+1

Hầu hết mọi thứ đều ở đây. Nó được chuyển trực tiếp tới Lucene cho các chỉ mục mặc định: http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/queryparsersyntax.html#Overview –