Giriş
Query nesnesi IndexSearcher'a verilir ve search() metodu çağrılır. Dönen sonuç TopDocs nesnesidir.
IndexSearcher nesnesinden Document nesnesini bulmak biraz karışık.
Bu nesnenin scoreDocs alanı ScoreDoc dizisidir. Her ScoreDoc için yine searcher nesnesinin doc() metodu çağrılır ve Document nesnesi elde edilir. Şöyle yaparız.
private static void queryDocs(RAMDirectory ramDir, Analyzer analyzer)
throws IOException, ParseException {
// IndexReader maintains access to the index
IndexReader reader = DirectoryReader.open(ramDir);
// IndexSearcher handles searching of an IndexReader
IndexSearcher searcher = new IndexSearcher(reader);
// Setup a query
QueryParser parser = new QueryParser("body", analyzer);
Query query = parser.parse("hey earth");
// Search the index
TopDocs foundDocs = searcher.search(query, 10);
System.out.println("Total Hits: " + foundDocs.totalHits);
for (ScoreDoc scoreDoc : foundDocs.scoreDocs) {
// Get the doc from the index by id
Document document = searcher.doc(scoreDoc.doc);
System.out.println("Name: " + document.get("name")
+ " - Body: " + document.get("body")
+ " - Score: " + scoreDoc.score);
}
// Close down the reader
reader.close();
}
IndexReader Sınıfı
GirişŞu satırı dahil ederiz.
import org.apache.lucene.index.IndexReader;
constructorŞöyle yaparız.
Directory directory = new RAMDirectory();
...
IndexReader reader = DirectoryReader.open(directory);
getTermVector metodu
Şöyle yaparız.
for (int i = 0; i < reader.maxDoc(); i++) {
Terms terms = reader.getTermVector(i, "country_text");
}
Şöyle yaparız.
for (int i = 0; i < reader.maxDoc(); i++) {
Document doc = reader.document(i);
...
}
IndexSearcher SınıfıGiriş
Şu satırı dahil ederiz.
import org.apache.lucene.search.IndexSearcher;
IndexSearcher instances are completely thread safe, meaning multiple threads can call any of its methods, concurrently. If your application requires external synchronization, you should not synchronize on the IndexSearcher instance; use your own (non-Lucene) objects instead.
Şöyle yaparız.
IndexReader reader = IndexReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
constructor - DirectoryReader
Şöyle yaparız.
Şöyle yaparız.
Directory directory = new RAMDirectory();
...
// Now search the index:
DirectoryReader directoryReader = DirectoryReader.open(directory);
IndexSearcher searcher = new IndexSearcher(directoryReader);
getIndexReader metodu
constructor içinde verilen nesneyi döner.
search metodu - Query + int
TopDocs nesnesi döner.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
search metodu - Query + int
TopDocs nesnesi döner.
Örnek
Şöyle yaparız.
// Search the index
TopDocs foundDocs = searcher.search(query, 10);
ÖrnekŞöyle yaparız.
Query query = ...;
int hits = searcher.search(query, 1).totalHits;
ÖrnekŞöyle yaparız.
Query query = ...;
ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
Şöyle yaparız.
// Search the index
TopDocs foundDocs = searcher.search(query, 10);
System.out.println("Total Hits: " + foundDocs.totalHits);
for (ScoreDoc scoreDoc : foundDocs.scoreDocs) {
// Get the doc from the index by id
Document document = searcher.doc(scoreDoc.doc);
System.out.println("Name: " + document.get("name")
+ " - Body: " + document.get("body")
+ " - Score: " + scoreDoc.score);
}
totalHits AlanıŞöyle yaparız.
// Search the index
TopDocs foundDocs = searcher.search(query, 10);
System.out.println("Total Hits: " + foundDocs.totalHits);
Hiç yorum yok:
Yorum Gönder