List of usage examples for org.apache.lucene.search ScoreDoc toString
@Override
public String toString()
From source file:com.github.le11.nls.lucene.UIMATypeBasedSimilarityTest.java
License:Apache License
@Test public void baseSimilarityTest() { try {//from w w w .j a v a 2 s.c o m IndexSearcher searcher = new IndexSearcher(dir, true); Similarity payloadSimilarity = new UIMATypeBasedSimilarity(); searcher.setSimilarity(payloadSimilarity); // BooleanQuery booleanQuery = new BooleanQuery(); // booleanQuery.add(new PayloadTermQuery(new Term("title", "London"), new MaxPayloadFunction()), BooleanClause.Occur.SHOULD); // booleanQuery.add(new PayloadTermQuery(new Term("title", "English"), new MaxPayloadFunction()), BooleanClause.Occur.SHOULD); // SpanQuery[] clauses = new SpanQuery[]{new PayloadTermQuery(new Term("title","London"),new MaxPayloadFunction()), // new PayloadTermQuery(new Term("title","English"),new MaxPayloadFunction())}; // int slop = 3; // boolean inOrder = true; // Query query = new PayloadNearQuery(clauses, slop, inOrder); Query directQuery = new TermQuery(new Term("title", "London")); TopDocs topDocs = searcher.search(directQuery, 10); System.out.println("Number of matching docs: " + topDocs.totalHits); ScoreDoc doc1 = topDocs.scoreDocs[0]; System.out.println("Doc: " + doc1.toString()); System.out.println("Explain: " + searcher.explain(directQuery, doc1.doc)); Query payloadQuery = new PayloadTermQuery(new Term("title", "London"), new MaxPayloadFunction()); topDocs = searcher.search(payloadQuery, 10); System.out.println("Number of matching docs: " + topDocs.totalHits); ScoreDoc doc2 = topDocs.scoreDocs[0]; System.out.println("Doc: " + doc2.toString()); System.out.println("Explain: " + searcher.explain(payloadQuery, doc2.doc)); assertTrue(doc1.score < doc2.score); } catch (Exception e) { e.printStackTrace(); fail(e.getLocalizedMessage()); } }
From source file:com.stratio.cassandra.lucene.service.RowServiceWide.java
License:Apache License
/** * {@inheritDoc}//from w w w . ja va2s . c om * * The {@link Row} is a logical one. */ @Override protected List<ScoredRow> scoredRows(List<SearchResult> searchResults, long timestamp) { Map<String, Row> rowsByScore = new HashMap<>(searchResults.size()); // Group key queries by partition keys Map<String, ScoreDoc> scoresByClusteringKey = new HashMap<>(searchResults.size()); Map<DecoratedKey, List<CellName>> keys = new HashMap<>(); for (SearchResult searchResult : searchResults) { DecoratedKey partitionKey = searchResult.getPartitionKey(); CellName clusteringKey = searchResult.getClusteringKey(); ScoreDoc scoreDoc = searchResult.getScoreDoc(); String rowHash = rowMapper.hash(partitionKey, clusteringKey); scoresByClusteringKey.put(rowHash, scoreDoc); List<CellName> clusteringKeys = keys.get(partitionKey); if (clusteringKeys == null) { clusteringKeys = new ArrayList<>(); keys.put(partitionKey, clusteringKeys); } clusteringKeys.add(clusteringKey); } for (Map.Entry<DecoratedKey, List<CellName>> entry : keys.entrySet()) { DecoratedKey partitionKey = entry.getKey(); for (List<CellName> clusteringKeys : Lists.partition(entry.getValue(), 1000)) { Map<CellName, Row> partitionRows = rows(partitionKey, clusteringKeys, timestamp); for (Map.Entry<CellName, Row> entry1 : partitionRows.entrySet()) { CellName clusteringKey = entry1.getKey(); Row row = entry1.getValue(); String rowHash = rowMapper.hash(partitionKey, clusteringKey); ScoreDoc scoreDoc = scoresByClusteringKey.get(rowHash); Float score = scoreDoc.score; Row scoredRow = addScoreColumn(row, timestamp, score); rowsByScore.put(scoreDoc.toString(), scoredRow); } } } List<ScoredRow> scoredRows = new ArrayList<>(searchResults.size()); for (SearchResult searchResult : searchResults) { ScoreDoc scoreDoc = searchResult.getScoreDoc(); Row row = rowsByScore.get(scoreDoc.toString()); if (row != null) { scoredRows.add(new ScoredRow(row, scoreDoc)); } } return scoredRows; }
From source file:org.rapidpm.microservice.optionals.index.stores.indices.IndexOfTypeString.java
License:Apache License
@Override public List<String> query(final String query) { try {// w w w . ja va 2 s . c o m final Query q = new QueryParser(FIELD_TXT, analyzer).parse(query); final IndexSearcher searcher = new IndexSearcher(directoryReader); final TopScoreDocCollector collector = TopScoreDocCollector.create(1_00); searcher.search(q, collector); final ScoreDoc[] hits = collector.topDocs().scoreDocs; final List<String> result = new ArrayList<>(); for (final ScoreDoc hit : hits) { result.add(hit.toString()); } return result; } catch (ParseException | IOException e) { e.printStackTrace(); } return Collections.emptyList(); }