Ticket #716: Search1.java

File Search1.java, 2.2 KB (added by Aakash, 8 years ago)

Java implementation of search1.py

Line 
1package org.xapian.examples;
2
3import org.xapian.Database;
4import org.xapian.Document;
5import org.xapian.Enquire;
6import org.xapian.MSet;
7import org.xapian.MSetIterator;
8import org.xapian.Query;
9import org.xapian.QueryParser;
10import org.xapian.Stem;
11
12public class Search1 {
13
14 // Command line args - dbpath querystring
15 public static void main(String[] args)
16 {
17 if(args.length < 2)
18 {
19 System.out.println("Insufficient number of arguments (should be dbpath querystring)");
20 return;
21 }
22 search(args[0], args[1]);
23 }
24
25 public static void search(String dbpath, String queryString)
26 {
27 search(dbpath, queryString, 0, 10);
28 }
29
30 public static void search(String dbpath, String queryString, int offset, int pagesize)
31 {
32 // offset - defines starting point within result set
33 // pagesize - defines number of records to retrieve
34
35 // Open the databse we're going to search.
36 Database db = new Database(dbpath);
37
38 // Set up a QueryParser with a stemmer and suitable prefixes
39 QueryParser queryParser = new QueryParser();
40 queryParser.setStemmer(new Stem("en"));
41 queryParser.setStemmingStrategy(QueryParser.stem_strategy.STEM_SOME);
42 // Start of prefix configuration.
43 queryParser.addPrefix("title", "S");
44 queryParser.addPrefix("description", "XD");
45 // End of prefix configuration.
46
47 // And parse the query
48 Query query = queryParser.parseQuery(queryString);
49
50 // Use an Enquire object on the database to run the query
51 Enquire enquire = new Enquire(db);
52 enquire.setQuery(query);
53
54 // And print out something about each match
55 MSet mset= enquire.getMSet(offset, pagesize);
56 MSetIterator msetIterator = mset.begin();
57
58 while(msetIterator.hasNext())
59 {
60 long rank = msetIterator.getRank();
61 long docID = msetIterator.getDocId();
62 Document doc = db.getDocument(docID);
63 String title = doc.getValue(0);
64
65 System.out.println((rank+1)+": #"+docID+" "+title);
66 msetIterator.next();
67 }
68
69 }
70}