Inline below

On Jul 24, 2007, at 8:14 PM, Askar Zaidi wrote:

Sure.

 public float doBodySearch(Searcher searcher,String query, int id){

                 try{
                                score = search(searcher, query,id);
                     }
                      catch(IOException io){}
                      catch(ParseException pe){}

                      return score;

                }

private float search(Searcher searcher, String queryString, int id) throws
ParseException, IOException {

        // Build a Query object

        QueryParser queryParser = new QueryParser("contents", new
KeywordAnalyzer());

        queryParser.setDefaultOperator(QueryParser.Operator.AND);

        Query query = queryParser.parse(queryString);

        // Search for the query

        Hits hits = searcher.search(query);
        Document doc = null;

        // Examine the Hits object to see if there were any matches
        int hitCount = hits.length();

                for(int i=0;i<hitCount;i++){
                doc = hits.doc(i);
                String str = doc.get("item");
                int tmp = Integer.parseInt(str);
                if(tmp==id)
                score = hits.score(i);
                }

Why do you need this if clause? Can't you make the id a required term in your query, that way you know it is a match in all returned documents? Also, do all three of your searches do this inner loop on the hits? You either need to implement caching, or, and this is better, I think, you need to refactor so that you can combine your various searches into a single search and only loop over the hits once. But, that is just a guess. I don't actually know what your application is doing. Also, if you are returning "score", why don't you break out of the hits loop after you find your hit?

In database land, I think you are doing the equivalent of the n- select problem (or whatever they call it, i.e. when you do a select, iterate over each select, generating a new select for each statement on other tables) and should try to figure out how to do a "join" instead, whereby a single query or two gets you all your results and then you process them.

-Grant


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to