lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Hall <mh...@informatics.jax.org>
Subject Re: Searching index problems with tomcat
Date Thu, 21 May 2009 13:08:04 GMT
Its been a few days, and we haven't heard back about this issue, can we 
assume that you fixed it via using fully qualified paths then?

Matt

Ian Lea wrote:
> Marco
>
>
> You haven't answered Matt's question about where you are running it
> from.  Tomcat's default directory may well not be the same as yours.
> I strongly suggest that you use a full path name and/or provide some
> evidence that your readers and writers are using the same directory
> and thus lucene index.
>
>
> --
> Ian.
>
>
> On Wed, May 20, 2009 at 9:59 AM, Marco Lazzara <marco.lazzara@gmail.com> wrote:
>   
>> I've posted the indexing part,but I don't use this in my app.After I
>> create the index,I put that in a folder like /home/marco/RDFIndexLucece
>> and when I run the query I'm only searching (and not indexing).
>>
>> String[] fieldsearch = new String[] {"name", "synonyms", "propIn"};
>>    //RDFinder rdfind = new RDFinder("RDFIndexLucene/",fieldsearch);
>> TreeMap<Integer, ArrayList<String>> paths;
>> try {
>>                this.paths = this.rdfind.Search(text, "path");
>>            } catch (ParseException e1) {
>>                e1.printStackTrace();
>>            } catch (IOException e1) {
>>                e1.printStackTrace();
>>            }
>>
>> Marco Lazzara
>>     
>>> Sorry, anyhow looking over this quickly here's a summarization of what
>>> I see:
>>>
>>> You have documents in your index that look like the following:
>>>
>>> name which is indexed and stored.
>>> synonyms which are indexed and stored
>>> path, which is stored but not indexed
>>> propin, which is stored and indexed
>>> propinnum, which is stored but not indexed
>>> and ... vicinity I guess which is stored but not indexed
>>>
>>> For an analyzer you are using Standard analyzer (which considering all
>>> the Italian? is an interesting choice.)
>>>
>>> And you are opening your index using FSDirectory, in what appears to
>>> be a by reference fashion (You don't have a fully qualified path to
>>> where your index is, you are ASSUMING that its in the same directory
>>> as this code, unless FSDirectory is not implemented as I think it is.)
>>>
>>> Now can I see the consumer code?  Specifically the part where you are
>>> opening the index/constructing your queries?
>>>
>>> I'm betting what's going on here is you are deploying this as a war
>>> file into tomcat, and its just not really finding the index as a
>>> result of how the war file is getting deployed, but looking more
>>> closely at the source code should reveal if my suspicion is correct here.
>>>
>>> Also runtime wise, when you run your standalone app, where
>>> specifically in your directory structure are you running it from?
>>> Cause if you are opening your index reader/searcher in the same way as
>>> you are creating your writer here, I'm pretty darn certain that will
>>> cause you problems.
>>>
>>> Matt
>>>
>>>
>>>
>>> Marco Lazzara wrote:
>>>       
>>>> _Could you further post your Analyzer Setup/Query Building code from
>>>> BOTH apps. _
>>>>
>>>> there is only one code.It is the same for web and for standalone.
>>>> And it is exactly the real problem!!the code is the same,libraries are
>>>> the same,query index etc etc. are the same.
>>>>
>>>> This is the class that create index
>>>>
>>>>
>>>> public class AlternativeRDFIndexing {
>>>>        private Analyzer analyzer;
>>>>     private Directory directory;
>>>>     private IndexWriter iwriter;
>>>>     private WordNetSynonymEngine wns;
>>>>     private AlternativeResourceAnalysis rs;
>>>>     public ArrayList<String> commonnodes;
>>>>        //private RDFinder rdfind = new RDFinder("RDFIndexLucene/",new
>>>> String[] {"name"});
>>>>    //    public boolean Exists(String node) throws ParseException,
>>>> IOException{
>>>> //           //        return rdfind.Exists(node);
>>>> //    }
>>>>        public AlternativeRDFIndexing(String inputfilename) throws
>>>> IOException, ParseException{
>>>>              commonnodes = new ArrayList<String>();
>>>>                // bisogna istanziare un oggetto per fare analisi sul
>>>> documento rdf
>>>>         rs = new AlternativeResourceAnalysis(inputfilename);
>>>>
>>>>                    ArrayList<String> nodelist = rs.getResources();
>>>>         int nodesize = nodelist.size();
>>>>         ArrayList<String> sourcelist = rs.getsource();
>>>>         int sourcesize = sourcelist.size();
>>>>                //sinonimi
>>>>         wns = new WordNetSynonymEngine("sinonimi/");
>>>>                //creazione di un analyzer standard
>>>>         analyzer = new StandardAnalyzer();
>>>>
>>>>         //Memorizza l'indice in RAM:
>>>>                //Directory directory = new RAMDirector();
>>>>                //Memorizza l'indice su file
>>>>                directory = FSDirectory.getDirectory("RDFIndexLucene/");
>>>>                //Creazione istanza per la scrittura dell'indice
>>>>         //Tale istanza viene fornita di analyzer, di un boolean per
>>>> indicare se ricreare o meno da zero
>>>>         //la struttura e di una dimensione massima (o infinita
>>>> IndexWriter.MaxFieldLength.UNLIMITED)
>>>>         iwriter = new IndexWriter(directory, analyzer, true, new
>>>> IndexWriter.MaxFieldLength(25000));
>>>>                       //costruiamo un indice con solo n documenti: un
>>>> documento per nodo
>>>>                for (int i = 0; i < nodesize; i++){
>>>>                        Document doc = new Document();
>>>>                        //creazione dei vari campi
>>>>                        // ogni documento avrˆ
>>>>             // un campo name: nome del nodo
>>>>             // indicazione di memorizzazione(Store.YES) e indicizzazione
>>>> con analyzer(ANALYZED)
>>>>                        String node = nodelist.get(i);
>>>>                        //if (sourcelist.contains(node)) break;
>>>>                        //if (rdfind.Exists(node)) commonnodes.add(node);
>>>>                        Field field = new Field("name", node,
>>>> Field.Store.YES,Field.Index.ANALYZED);
>>>>             //Aggiunta campo al documento
>>>>             doc.add(field);
>>>>                        //Aggiungo i sinonimi
>>>>             String[] nodesynonyms = wns.getSynonyms(node);
>>>>             for (int is = 0; is < nodesynonyms.length; is++) {
>>>>                                field = new Field("synonyms",
>>>> nodesynonyms[is],
>>>> Field.Store.YES,Field.Index.ANALYZED);
>>>>                 //Aggiunta campo al documento
>>>>                 doc.add(field);
>>>>             }
>>>>                        // uno o piu campi path_i: path minimali dalle
>>>> sorgenti al nodo
>>>>             // non indicizzati
>>>>                        for (int j = 0; j < sourcesize; j++) {
>>>>             String source = sourcelist.get(j);
>>>> ArrayList<LinkedList<String>> path = new
>>>> ArrayList<LinkedList<String>>();
>>>>             try{
>>>>                            if ((source.equals(node)) ||
>>>> (sourcelist.contains(node))){
>>>>                     field = new Field("path", "null", Field.Store.YES,
>>>> Field.Index.NO);
>>>>                     doc.add(field);
>>>>                 }
>>>>                 else{
>>>>                     path = rs.getPaths(source, node);
>>>>                     for (int ii = 0; ii < path.size(); ii++) {
>>>>                         String pp = rs.getPath(path.get(ii));
>>>>                         field = new Field("path", pp, Field.Store.YES,
>>>> Field.Index.NO);
>>>>                         doc.add(field);                     }
>>>>                 }
>>>>                                }
>>>>             catch (IllegalArgumentException e){
>>>>                 System.out.println("source: "+source+ " node: "+node);
>>>>                 field = new Field("path", "null", Field.Store.YES,
>>>> Field.Index.NO);
>>>>                 doc.add(field);
>>>>             }
>>>>                                              }
>>>>                        // proprietˆ entranti
>>>>             // indicizzati
>>>>           //versione con i sinonimi
>>>>                        ArrayList<String> y = rs.getInProperty(node);
>>>>                        if (y != null) {
>>>>
>>>>             for (int j = 0; j < y.size(); j++) {
>>>>                                String propin = y.get(j);
>>>>                 field = new Field("propIn", propin, Field.Store.YES,
>>>> Field.Index.ANALYZED);
>>>>                 doc.add(field);
>>>>             String[] propinsynonyms = wns.getSynonyms(propin);
>>>>                        for (int is = 0; is < propinsynonyms.length;
>>>> is++) {
>>>>                                field = new Field("propIn",
>>>> propinsynonyms[is],
>>>> Field.Store.YES,Field.Index.ANALYZED);
>>>>                 //Aggiunta campo al documento
>>>>                 doc.add(field);
>>>>                  }
>>>>                          }
>>>>                        // un campo num_propIn: numero di proprietˆ
>>>> entranti
>>>>             // non indicizzato
>>>>                        String num_propIN = String.valueOf(y.size());
>>>>                        field = new Field("num_propIn", num_propIN,
>>>> Field.Store.YES,
>>>> Field.Index.NO);
>>>>             doc.add(field);
>>>>                        }
>>>>                        else {
>>>>                                String num_propIN = String.valueOf(0);
>>>>                                field = new Field("num_propIn",
>>>> num_propIN,
>>>> Field.Store.YES, Field.Index.NO);
>>>>                 doc.add(field);
>>>>                            }
>>>>                        // i vicini del nodo
>>>>                        ArrayList<String> v = rs.getVicini(node);
>>>>                        if (v != null) {
>>>>
>>>>             for (int j = 0; j < v.size(); j++) {
>>>>                                String vicino = v.get(j);
>>>>                 field = new Field("vicini", vicino, Field.Store.YES,
>>>> Field.Index.ANALYZED);
>>>>                 doc.add(field);                                 }
>>>>                        }
>>>>                                                  //aggiunta documento
>>>> all'indice
>>>>             iwriter.addDocument(doc);
>>>>         }
>>>>                iwriter.close();
>>>>         directory.close();
>>>>            }
>>>>        public int getNR(){
>>>>         return rs.NumResource();
>>>>     }
>>>>
>>>>
>>>> }
>>>>
>>>> MARCO LAZZARA
>>>>
>>>>
>>>>         
>>>>> Things that could help us immensely here.
>>>>>
>>>>> Can you post your indexReader/Searcher initialization code from your
>>>>> standalone app, as well as your webapp.
>>>>>
>>>>> Could you further post your Analyzer Setup/Query Building code from
>>>>> both apps.
>>>>>
>>>>> Could you further post the document creation code used at indexing
>>>>> time? (Which analyzer, and which fields are indexed/stored)
>>>>>
>>>>> Give us this, and I'm pretty darn sure we can nail down your issue.
>>>>>
>>>>> Matt
>>>>>
>>>>> Ian Lea wrote:
>>>>>
>>>>>           
>>>>>>> ...
>>>>>>> There are no exceptions.When I run the query a new shell is
>>>>>>> displayed but
>>>>>>>  with no result.
>>>>>>>
>>>>>>>               
>>>>>> New shell?
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>>>> _*Are you sure the index is the same - what do IndexReader.maxDoc(),
>>>>>>> numDocs() and getVersion() say, standalone
>>>>>>> and in tomcat?
>>>>>>>
>>>>>>> *_What do you mean with this question??
>>>>>>>
>>>>>>>               
>>>>>> IndexReader ir = ...
>>>>>> System.out.printf("maxDoc=%s, ...", ir.maxDoc(), ...);
>>>>>>
>>>>>> and run in tomcat and standalone.  To absolutely confirm you're
>>>>>> looking at the same index, and it has documents, etc.
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Ian.
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>>>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>>>>
>>>>>>
>>>>>>             
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> __________ Information from ESET NOD32 Antivirus, version of virus
>>>>> signature database 4087 (20090519) __________
>>>>>
>>>>> The message was checked by ESET NOD32 Antivirus.
>>>>>
>>>>> http://www.eset.com
>>>>>
>>>>>
>>>>>
>>>>>           
>>>>
>>>> __________ Information from ESET NOD32 Antivirus, version of virus
>>>> signature database 4087 (20090519) __________
>>>>
>>>> The message was checked by ESET NOD32 Antivirus.
>>>>
>>>> http://www.eset.com
>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>>
>>>>
>>>>         
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>
>>>
>>>
>>>
>>> __________ Information from ESET NOD32 Antivirus, version of virus
>>> signature database 4088 (20090519) __________
>>>
>>> The message was checked by ESET NOD32 Antivirus.
>>>
>>> http://www.eset.com
>>>
>>>
>>>       
>>
>> __________ Information from ESET NOD32 Antivirus, version of virus signature database
4088 (20090519) __________
>>
>> The message was checked by ESET NOD32 Antivirus.
>>
>> http://www.eset.com
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>
>>
>>     
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>   



---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message