In einem Basiscode zum Erstellen von Index- und Suchabfragen möchte ich TFIDFsimilarity zum Rangieren von abgerufenen Dokumenten verwenden. Aber ich bekomme einen Fehler "Kann den Typ TFIDFSimilarity nicht instanziieren". Mein Code ist unten angegeben:So ordnen Sie Dokumente mithilfe von tfidf similairty in lucene
public class TFIDF_T {
private static Document createDocument(String id, String tb) {
Document doc = new Document();
doc.add(new Field("id", id, TextField.TYPE_STORED));
doc.add(new Field("tb", tb, TextField.TYPE_STORED));
return doc;
}
private static void search(IndexSearcher searcher, String queryString, Analyzer analyzer) throws IOException, ParseException {
QueryParser parser = new QueryParser("tb", analyzer);
Query query = parser.parse(queryString);
ScoreDoc[] hits = searcher.search(query, 20).scoreDocs;
int hitCount = hits.length;
for (int i = 0; i < hitCount; i++) {
Document doc = searcher.doc(hits[i].doc);
System.out.println(doc.get("id"));
}
}
public static void run(String path) throws IOException, ParseException {
int ctr = 0;
Analyzer analyzer = new StandardAnalyzer();
RAMDirectory directory = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
String id = "101";
String tb = "How to rank documents using tfidfsimilairty";
iwriter.addDocument(createDocument(id, tb));
}
iwriter.close();
DirectoryReader ireader = DirectoryReader.open(directory);
IndexSearcher isearcher = new IndexSearcher(ireader);
isearcher.setSimilarity(new **TFIDFSimilarity**());
String tb1 = "How to rank documents using tfidfsimilairty";
search(isearcher, tb1, analyzer);
}
ireader.close();
directory.close();
}
}
Danke. Ja, ich verwende 6.1.0 und verwende bereits ClassicSimilarity. –