2008-10-31 13 views
9

लुसीन एक उत्कृष्ट खोज इंजन है, लेकिन .NET संस्करण आधिकारिक जावा रिलीज के पीछे है (नवीनतम स्थिर .NET रिलीज 2.0 है, लेकिन नवीनतम जावा ल्यूसीन संस्करण 2.4 है, जिसमें अधिक सुविधाएं हैं)।आप ल्यूकेन ऑन .net कैसे चलाते हैं?

आप इसे कैसे प्राप्त करते हैं?

+0

किसी से अधिक कुडोस वाले व्यक्ति को ल्यूसीन – friism

+0

पर "ल्यूसेंस" संपादित करना चाहिए बस इसे ठीक करें :) – Kalid

उत्तर

20

एक तरह से मैंने पाया, जो आश्चर्यचकित था काम कर सकता था: जावा .jar फ़ाइल से .NET DLL बनाएं! IKVM का उपयोग आप कर सकते हैं download Lucene, .jar फ़ाइल मिलता है, और चलाएँ:

ikvmc -target:library <path-to-lucene.jar> 

जो इस तरह एक .NET dll उत्पन्न करता है: Lucene कोर-2.4.0.dll

फिर आप सिर्फ इस संदर्भित कर सकते हैं आपकी परियोजना से डीएलएल और आप जाने के लिए अच्छे हैं! ऐसे कुछ जावा प्रकार हैं जिनकी आपको आवश्यकता होगी, इसलिए IKVM.OpenJDK.ClassLibrary.dll का भी संदर्भ लें। आपका कोड इस तरह एक सा लग सकता है:

QueryParser parser = new QueryParser("field1", analyzer); 
java.util.Map boosts = new java.util.HashMap(); 
boosts.put("field1", new java.lang.Float(1.0)); 
boosts.put("field2", new java.lang.Float(10.0)); 

MultiFieldQueryParser multiParser = new MultiFieldQueryParser 
         (new string[] { "field1", "field2" }, analyzer, boosts); 
multiParser.setDefaultOperator(QueryParser.Operator.OR); 

Query query = multiParser.parse("ABC"); 
Hits hits = isearcher.search(query); 

मैं कभी नहीं पता था कि आप इतनी आसानी से नेट अंतर करने के लिए जावा हो सकता था। सबसे अच्छा हिस्सा यह है कि सी # और जावा "लगभग" स्रोत कोड संगत है (जहां लुसीन उदाहरण संबंधित हैं)। Console.Writeln के साथ बस System.Out को प्रतिस्थापित करें :)।

=======

अद्यतन: जब Lucene हाइलाइटर तरह पुस्तकालयों का निर्माण सुनिश्चित करें कि आप कोर विधानसभा को संदर्भित करती हैं (अन्यथा आप कक्षाएं लापता के बारे में चेतावनी मिल जाएगा)। तो हाइलाइटर इस तरह बनाया गया है:

ikvmc -target:library lucene-highlighter-2.4.0.jar -r:lucene-core-2.4.0.dll 
+0

यह मेरी पहली बार आईकेवीएम सीखना है। प्रदर्शन ठीक है? क्योंकि, मूल जावा में प्रत्येक निर्देश को वीएम की दो परतों से गुज़रना पड़ता है, है ना? IKVM JVM और फिर .NET CLR। और खोज एक चीज है जिसे आप जितनी जल्दी हो सके बनना चाहते हैं। –

+0

अच्छा सवाल। इस मामले में, मेरा मानना ​​है कि यह वास्तव में एक .NET डीएल बनाता है जो सीधे चलता है और इसका अर्थ नहीं है। तो, सीएलआर के माध्यम से ल्यूसीन-कोर-2.4.0.dll चल रहा है। IKVM में अन्य मोड हो सकते हैं जहां यह फ्लाई व्याख्या पर कर रहा है जो धीमा हो सकता है। – Kalid

+1

त्वरित डेटा से, हमारे डेटासेट आदि के लिए, मुझे लुसीन.NET और IKVMC संस्करण के बीच प्रदर्शन अंतर दिखाई नहीं देता है। – Kalid

1

स्रोत डाउनलोड करें और इसे बनाएं। मैंने पिछले सप्ताहांत में यह किया था और यह आसान था। बिल्कुल भी परेशानी नहीं है। स्रोत संस्करण 2.3.1 पर है।

मैं मेलिंग सूची की सदस्यता लेता हूं और इससे निर्णय लेता हूं, लुसेन.Net सक्रिय रूप से विकसित किया जा रहा है।

+0

में परिवर्तित किया जा सकता है दिलचस्प - मैं अभी भी नवीनतम संस्करण पसंद करूंगा (यह देखते हुए कि इसे आसानी से IKVM के साथ कैसे पोर्ट किया जा सकता है) लेकिन सूचक के लिए धन्यवाद ! – Kalid

+0

ऐसा लगता है कि नवीनतम विकास संस्करण 2.3 है, लेकिन नवीनतम स्थिर रिलीज 2.0.0.4 है। – Kalid

+0

मैं अपने ऐप (BugTracker.NET) के साथ 2.3 शिपिंग कर रहा हूं और अब तक कोई शिकायत नहीं है। –

1

Lucene.net विकास किया जा रहा है और अब तीन कमिटर

0

मैं जार से Lucene 2.4 परिवर्तित इस तरह के माध्यम से DLL करने के लिए, लेकिन अब यह मुझे उस 'टाइप करें या नाम स्थान Lucene नहीं पाया जा सका' एक त्रुटि देता है। मैंने परियोजना से पुराने डीएल को हटा दिया और नए के लिए संदर्भ जोड़ा। मैं वास्तव में पुराने संस्करण से छुटकारा पाना चाहता हूं क्योंकि इसमें लगभग 2 दिन लग गए थे और अंत में ऑप्टिमाइज़ेशन के दौरान कुछ त्रुटि हुई और अब सूचकांक अद्यतन नहीं है: एस। मैंने कहीं पढ़ा है कि ल्यूसीन 2.4 इंडेक्सिंग गति पुराने संस्करणों की तुलना में कई गुना तेजी से है, अगर मैं एसवीएन से 2.3.1 का उपयोग करता हूं तो यह भी तेज होगा?

संबंधित मुद्दे