शामिल वास्तव में अभी तक समर्थित नहीं है (शायद यह होना चाहिए, लेकिन यह है कि पूरी तरह से एक और बात है - हम केवल वास्तव में जब के लिए अपने पूछा विभिन्न ऑपरेटरों के लिए समर्थन जोड़ने)
किसी के खिलाफ एक से अधिक प्रश्नों के लिए के रूप में, मैं तुम्हें ग्रहण ' गतिशील डेटा करने के लिए प्रयास कर रहे हैं और आप जैसे
"X OR Y OR Z"
एक मुश्किल से एक है यही कारण है कि कुछ हासिल करना चाहते हैं, और LINQ प्रदाता डिफ़ॉल्ट रूप से उन कई कुल जाएगा कहां खंड के साथ और है, तो आपके उदाहरण लग रहा है
तरह
"X AND Y AND Z"
जो स्पष्ट रूप से मामला कभी नहीं होगा।
var results = s.Advanced.LuceneQuery<Item>()
.Where(string.Format("Tags,:({0})", string.Join(" OR ", tags)));
मेक भावना:
इस एक के लिए आपका सबसे अच्छा विकल्प Lucene क्वेरी (कम से कम अब के लिए) के लिए ड्रॉप डाउन और इस तरह कुछ करने के लिए है?
क्वेरी से ऊपर की तरह
"Tags,:(X OR Y OR Z)"
नोट दिखेगा: "टैग" RavenDB सूचित करता है कि टैग एक सरणी
ठीक है, [संपादित करें] है!
सबसे आसान तरीका क्या आप वास्तव में चाहते हैं, इन पंक्तियों
new IndexDefinition<Item, Item>()
{
Map = docs => from doc in docs
select new
{
Tags = doc.Tags
},
Indexes = {{ x => x.Tags, FieldIndexing.Analyzed }}
}.ToIndexDefinition(store.Conventions));
फिर अपने ands के लिए क्वेरी करने के लिए साथ कुछ करने के लिए है आप कुछ इस तरह कर सकते हैं:
var results = s.Advanced.LuceneQuery<Item, WhateverYouCalledThatIndex>()
.Where(string.Format("Tags:({0})", string.Join(" AND ", tags)));
अब, चीजों को
Tags = doc.Tags
वाई से अवगत होना चाहिए उस सरणी को एक विशाल ब्लॉब में क्रमबद्ध कर देगा, क्योंकि यह केवल तार है जो इस उदाहरण के लिए काम करेगा।
मैं इसे व्यक्त करने के बेहतर तरीके देख रहा हूं, यह संभावना नहीं है कि हम ऐसा करने के लिए LINQ-ish तरीके से आएंगे, क्योंकि यह वास्तव में बहुत अच्छी तरह से मानचित्र नहीं है - लेकिन यह है जवाब यह है कि काम करेंगे :)
मुझे लगता है कि मैं काफी कम से कम ऐसा करने में सक्षम होना चाहते हैं
Map = docs => from doc in docs
select new
{
Tags = String.Join(" ", doc.Tags)
},
(यह बहुत काम नहीं करेगा यह कोशिश मत करो), लेकिन यह एक सा है आप जो हासिल करना चाहते हैं उसके बारे में अधिक स्पष्ट।
'GetQueryable()' वापसी प्रकार क्या है? और आप 'query = query में क्या कर रहे हैं। जहां (i => i.Tags.Contains (टैग));'? क्वेरी प्रकार क्या है? –
GetQueryable() एक IQueryable- देता है। हालांकि मेरे पास पूरे दस्तावेज़ सत्र तक पहुंच है, इसलिए यह सिर्फ एक उदाहरण था। –
CodingInsomnia