Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Persian
  4. [SOLVED]CLucene راهنمای برای استفاده از

[SOLVED]CLucene راهنمای برای استفاده از

Scheduled Pinned Locked Moved Persian
6 Posts 2 Posters 2.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    hdeldar
    wrote on last edited by
    #1

    p{direction: rtl; text-align: right}. راهنمایی در مورد استفاده از کتابخانه QtCLucene می خواستم.آیا کسی از دوستان با این کتابخانه کار کرده ؟ برنامه نمونه یا فقط فایل .pro آن رو هم به اشتراک بزارند ممنون میشم.من الان با این کتابخانه با یک روش نامعقولی کار می کنم یعنی تمام فایل های cpp را به پروژه اضافه کردم .آیا میشه فقط از فایل لایب .a اون استفاده کرد؟

    1 Reply Last reply
    0
    • H Offline
      H Offline
      hdeldar
      wrote on last edited by
      #2

      p{direction:rtl; text-align:right}. راهی که من مشکلم رو باهاش حل کردم گرفتن سورس کد اصلی CLucene بود و بیلد اون با mingw32-make با این راه مشکلم حل شد و الان هم دارم از کتابخانه های که ساختم به خوبی استفاده می کنم.

      1 Reply Last reply
      0
      • H Offline
        H Offline
        hosein
        wrote on last edited by
        #3

        p{direction:rtl; text-align:right}. سلام میتونی یه نمونه سورسی از برنامه ای نوشتی برام بفرستی
        راستش من هنوز دقیق نمیدونم این CLuceneچطوری کار میکنه وهمینطور چطوری ایندکس و جستجو میکنه

        1 Reply Last reply
        0
        • H Offline
          H Offline
          hdeldar
          wrote on last edited by
          #4

          p{direction:rtl; text-align:right}. دوست عزیز سلام بعد از اینکه سرورس کد CLucene رو ساختید و کتابخانه هاش آماده شد توی فایل .Pro مسیر هاش رو بشکل زیر به برنامه اضافه کنید :
          @
          INCLUDEPATH += "<مسیر کتابخانه ساخته شده در سیستم خودتان>/clucene/include"
          LIBS += -L"<مسیر کتابخانه ساخته شده در سیستم خودتان>/clucene/lib"
          LIBS += -lclucene-core
          LIBS += -lclucene-shared@

          p{direction:rtl; text-align:right}. در اول فایلی که می خواهید استفاده کنید فایل هدررو اضافه کنید :
          @#include <CLucene.h>
          #include <QFile>
          #include <QFileInfo>
          #include <QDebug>

          using namespace lucene::index;
          using namespace lucene::analysis;
          using namespace lucene::util;
          using namespace lucene::store;
          using namespace lucene::document;
          using namespace lucene::search;
          using namespace lucene::queryParser;@

          p{direction:rtl; text-align:right}. برای ایندکس زدن فایلهای دلخواه بشکل زیر عمل می کنیم :
          @ WhitespaceAnalyzer an ;
          IndexWriter *writer = new IndexWriter("luceneIndex", &an, true);

                  QFile file&#40;"test1.txt"&#41;;
                  file.open(QIODevice::ReadWrite&#41;;
                  QString content(file.readAll(&#41;);
                  file.close();
          
                  Document doc;
                  doc.add(*new Field(_T("path"), QFileInfo("test1.txt").absolutePath().toStdWString().c_str(), Field::STORE_YES | Field::INDEX_UNTOKENIZED));
                  doc.add(*new Field(_T("contents"), content.toStdWString().c_str() , Field::STORE_YES | Field::INDEX_TOKENIZED));
          
                  writer->addDocument( &doc );
          
                  file.setFileName("test2.txt");
                  file.open(QIODevice::ReadWrite);
                  content = QString(file.readAll());
                  file.close();
          
                  doc.clear();
                  doc.add(*new Field(_T("path"), QFileInfo("test2.txt").absolutePath().toStdWString().c_str(), Field::STORE_YES | Field::INDEX_UNTOKENIZED));
                  doc.add(*new Field(_T("contents"), content.toStdWString().c_str() , Field::STORE_YES | Field::INDEX_TOKENIZED));
          
                  writer->addDocument( &doc );
                  writer->close();@
          

          p{direction:rtl; text-align:right}. و در آخر برای جستجوی عبارت مد نظر به روش زیر عمل می کنیم:

          @ WhitespaceAnalyzer an ;
          Query * m_pQuery = QueryParser::parse(L"DEFINES", L"contents", &an);
          IndexSearcher searcher("luceneIndex");
          Hits * m_pHits = searcher.search(m_pQuery);
          qDebug() << m_pHits->length();

                  for(int indx = 0; indx <  m_pHits->length(); indx++)
                  {
                      DocumentFieldEnumeration* pocFields;
          
                       pocFields = m_pHits -> doc( indx ).fields();
                      //float socre = m_pHits->score(indx);
          
                      while( pocFields->hasMoreElements() )
                      {
                         Field* pocField = pocFields->nextElement();
                         const TCHAR* fieldValue = pocField->stringValue();
                         const TCHAR* fieldName = pocField->name();
                         qDebug() << QString::fromWCharArray(fieldName) << " = " <<  QString::fromWCharArray(fieldValue) ;
                      }
          
                  }@
          

          p{direction:rtl; text-align:right}. امیدوارم کد های که براتون نوشتم مفید باشه .

          1 Reply Last reply
          0
          • H Offline
            H Offline
            hosein
            wrote on last edited by
            #5

            p{direction:rtl; text-align:right}. با تشکر از لطف شما دوست عزیز
            از کدتون استفاده کردم و خیلی مفید بود
            البته برا جستجوی فارسی مشکل داشت
            ضمن اینکه خواستم برا اینکه جستجو پویا باشه کدتون رو به این شکل زیر تغییر دادم اما کار نکرد

            WhitespaceAnalyzer an ;
            QString str = QString("L""+ui->lineEdit->text()+""");
            TCHAR *tchar = new TCHAR[str.length()+1];
            str.toWCharArray(tchar);
            tchar[str.length()] = 0;
            Query * m_pQuery = QueryParser::parse(L"DEFINES", tchar, &an);

            1 Reply Last reply
            0
            • H Offline
              H Offline
              hdeldar
              wrote on last edited by
              #6

              p{direction:rtl; text-align:right}. خواهش می کنم .خوب خط دوم به شکل زیر باشه فکر نمی کنم مشکلی باشه:

              @QString str = ui->lineEdit->text();@

              1 Reply Last reply
              0

              • Login

              • Login or register to search.
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • Users
              • Groups
              • Search
              • Get Qt Extensions
              • Unsolved