Lucene SpanNearQuery - PullRequest
       0

Lucene SpanNearQuery

0 голосов
/ 24 сентября 2010

Я пытаюсь понять Lucene SpanNearQuery и написал фиктивный пример. Я ищу "не", а затем "лиса" в 5 друг от друга. Я ожидаю, что документ 3 будет возвращен как единственный хит. Тем не менее, я не получаю хитов. Будем благодарны за любые мысли о том, что я могу делать неправильно.

Вот код:

// индексирование

public void doSpanIndexing()  throws IOException {   

IndexWriter writer=new IndexWriter(directory, AnalyzerUtil.getPorterStemmerAnalyzer(new StandardAnalyzer(Version.LUCENE_30)),IndexWriter.MaxFieldLength.LIMITED);

 Document doc1=new Document();
 doc1.add(new Field("content", " brown fox jumped ", Field.Store.YES, Index.ANALYZED,  Field.TermVector.WITH_POSITIONS_OFFSETS));
 writer.addDocument(doc1);


 Document doc2=new Document();
 doc2.add(new Field("content", "foxes not jumped over the huge fence", Field.Store.YES, Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
 writer.addDocument(doc2);

 Document doc3=new Document();
 doc3.add(new Field("content", " brown not fox", Field.Store.YES, Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
 writer.addDocument(doc3);


}

// поиск
public void doSpanSearching (String text) генерирует CorruptIndexException, IOException, ParseException {

 IndexSearcher searcher=new IndexSearcher(directory);

 SpanTermQuery term1 = new SpanTermQuery(new Term("content", "not"));
 SpanTermQuery term2 = new SpanTermQuery(new Term("content", text));
 SpanNearQuery query = new SpanNearQuery(new SpanQuery[] {term1, term2}, 5, true);
 TopDocs topDocs=searcher.search(query,5);

for(int i=0; i<topDocs.totalHits; i++) {
   System.out.println("Hit Document number: "+topDocs.scoreDocs[i].doc);
   System.out.println("Hit Document score: "+topDocs.scoreDocs[i].score);
   Document result=searcher.doc(topDocs.scoreDocs[i].doc);
   System.out.println("Search result "+(i+1)+ " is "+result.get("content"));

  }

}

1 Ответ

0 голосов
/ 25 сентября 2010

«Не» - это стоп-слово в стандартном анализаторе (т.е. оно удалено из вашего текста).Можете ли вы попробовать это с другим словом, которое не является стоп-словом?

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