Hi,

lucene documentation seems to be very confusing... here is my predicament

I have an object like the following:

public class PropertyImpl implements Property {

        String id;

        List<String> names = new ArrayList<String>();
        
        String address = "";

        String city = "";

        String street = "";

        String state = "";

        String cachedMatchingString;

...

..
public String toString() {
                // save some time
                if (cachedMatchingString == null) {

                        StringBuffer buf = new StringBuffer();

                        for (String name : names) {
                                //buf.append(name + ",");
                                buf.append(name + " ");
                        }

                        if (address != null) {
                                //buf.append(address + ",");
                                buf.append(address + " ");
                        }
                        if (city != null) {
                                //buf.append(city + ",");
                                buf.append(city + " ");
                        }
                        if (street != null) {
                                //buf.append(street + ",");
                                buf.append(street + " ");
                        }
                        if (state != null) {
                                //buf.append(state);
                                buf.append(state);
                        }

                        // get rid of any spaces
                        //cachedMatchingString = buf.toString().replace(" ", 
"");
                        cachedMatchingString = buf.toString();          
                }
                return cachedMatchingString;
        }


A typical instance of this object would have the following data

id=123134
names= {'Emmett Walsh', 'John Walsh'}
address="Milltown."
city="Dublin"
street="Bankside Cottages"
state="Ireland"
cachedMatchingString="Emmett Walsh John Walsh Milltown Dublin Bankside
Cottages Ireland"



I have about 8000 of these objects which I store in a hashmap for direct
access based on there id. It is the id(s) that I need lucene to return to me
so that I can retireve the desired object(s) from the hashmap.

The cachedMatchingString string is what I use when indexing the information
like following:

e.g. so for each of the 8000 objects i do the following to build the index

idxWriter.addDocument(createDocument(prop));


private static Document createDocument(Property prop) {
                Document doc = new Document();

                Field field = new Field("id", prop.getId(), Store.YES, 
Index.NO);
                doc.add(field);

                Field field2 = new Field("content", prop.toString(), Store.NO,
                                Index.TOKENIZED);  //will tokenise our long 
string
                doc.add(field2);

                return doc;
        }



Searching
I have a text field in my app that typically would take in a strings like

"Main s" , which
would end up in a query like "Main AND s*" like follows

"B", which would end up in a query like "b*"

                        queryString = queryString.trim();  //the string
taken in from textbox
                        
                        
                        String[] strings = queryString.split(" ");
                        int numStrings = strings.length;
                        
                        StringBuffer luceneQuery = new StringBuffer();
                        
                        for(int i=0;i<numStrings;i++){
                                String aString = strings[i];
                                if(aString.equals("")){
                                        continue;
                                }
                                luceneQuery.append(aString);
                                if((i+1) != numStrings){
                                        luceneQuery.append(" AND ");
                                }else{
                                        luceneQuery.append("*");
                                }
                        }
                        
                        //BooleanQuery.setMaxClauseCount(2*1024);
                        
                        
                        QueryParser parser = new QueryParser("content",
                                        new StandardAnalyzer());
                        
                        
                        org.apache.lucene.search.Query query =
parser.parse(luceneQuery.toString());

                        // Search for the query
                        Hits hits = searcher.search(query);


but i keep getting Toomanyclausesexceptions

Any suggestions on how to index or search better ?

-- 
View this message in context: 
http://www.nabble.com/Indexing-and-searching-help-tf4020937.html#a11420608
Sent from the Lucene - Java Developer mailing list archive at Nabble.com.


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

Reply via email to