Короткий QueryParser не может быть разыменован - PullRequest
0 голосов
/ 21 мая 2018

У меня есть несколько проиндексированных документов, и я хочу искать в них, используя запрос, я проверил документацию lucene и сделал этот код, но почему-то я получаю "short, не может быть разыменовано" в строке QueryParser, я новичок в Java и в Lucene, яиспользуя Lucene 5.3.1

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.time.Clock.system;
import javax.management.Query;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.core.KeywordAnalyzer;

import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.IndexSearcher;

import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import static sun.rmi.transport.TransportConstants.Version;
import static sun.rmi.transport.TransportConstants.Version;




public class Searcher
{
    public static void main(String args[]) throws IOException{
        String  query="computer science";
        Analyzer analyzer = new KeywordAnalyzer();
         Query q = new QueryParser(Version.LUCENE_CURRENT, "W", analyzer).parse(query); //ERROR IS HERE

         Path indexPath = Paths.get("MonIndex");
        Directory directory = FSDirectory.open(indexPath);
        DirectoryReader reader = DirectoryReader.open(directory);
        IndexSearcher iSearcher = new IndexSearcher(reader);

        TopDocs topdocs = iSearcher.search(q2, 100);
        ScoreDoc[] resultsList = topdocs.scoreDocs;
         for(int i = 0; i<resultsList.length; i++){
             Document book = iSearcher.doc(resultsList[i].doc); 
             System.out.println(book.getField("I").stringValue());
         }

    }

}

1 Ответ

0 голосов
/ 21 мая 2018

Проблема Version.LUCENE_CURRENT.Вы не импортируете Version Lucene, но у вас есть sun.rmi.transport.TransportConstants.Version, который, хотя я не знаком с библиотекой, безусловно, выглядит как короткий .Такая попытка разыменования, что попытка сослаться на несуществующий sun.rmi.transport.TransportConstants.Version.LUCENE_CURRENT вызывает эту ошибку.

Однако в версии Lucene вы говорите, что используете QueryParser ctor больше не принимает даже аргумент Version, поэтому просто удалите его:

Query q = new QueryParser("W", analyzer).parse(query);

Ваша следующая ошибка: Query, который возвращает queryparser, не является javax.management.Query.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...