You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pylucene-dev@lucene.apache.org by Andi Vajda <va...@apache.org> on 2013/04/07 00:22:03 UTC

Re: FacetExample.py

  Hi Thomas,

I resumed with the PyLucene samples migration and FacetExample.py is broken 
again because of another change in the facet module (I guess).
Namely, if you built PyLucene (trunk) against Lucene 4.2.1 by setting

  LUCENE_SVN=http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_4_2_1

in the Makefile.

Then:
   $ rm -rf lucene-java*
   $ make
   $ make test        (all should pass)
   $ make install
   $ python samples/FacetExample.py index    (seems to work)
   $ python samples/FacetExample.py simple

you get this error:

   AttributeError: type object 'FacetIndexingParams' has no attribute 'ALL_PARENTS'

Could you please look into this, make FacetExample.py work again ?

Thanks !

Andi..


On Wed, 13 Feb 2013, Thomas Koch wrote:

> Hi Andi,
> You're right - and API docs are wrong. Actually both must have change after 4.1 release: I checked the source of java-lucene v4.1 (lucene-4.1.0-src.tgz /  21-Jan-2013) and it matches the online javadocs. So I guess you're preparing for PyLucene v4.2?
>
> Note: I think that LUCENE_SVN=http://svn.apache.org/repos/asf/lucene/dev/branches/branch_4x is the "trunk" where 4.x development happens (i.e.  "unstable") whereas
> http://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_1/
> is the "stable" Lucene4.1/Solr4.1 branch (matching the 4.1 release and API docs). So if that's right (please correct me if I'm wrong) - why did you choose the branch_4x?
>
> Anyway, I fixed the FacetsExample.py for branch_4x now ,-)
>
> Some notes on API changes for those interested:
> -the 'new' FacetsCollector has a factory pattern now:
>  public static FacetsCollector create(FacetSearchParams fsp, IndexReader indexReader, TaxonomyReader taxoReader)
> - the order of constructor arguments for FacetSearchParams has changed!
> - FacetResultNode has changed: it used to be an interface but is now a concrete class (and the method getSubResults of FacetResultNode disappeared)
> - DrillDown.query() became DrillDownQuery() - with a new API.
>
> Well, at least API docs state it:
> "WARNING: This API is experimental and might change in incompatible ways in the next release."
> So one should be warned...
>
> Here's the new version: https://dl.dropbox.com/u/4384120/FacetExample.py
> Or as patch to svn: https://dl.dropbox.com/u/4384120/FacetExample_patch_20130213.txt
>
> Thanks again for your help.
>
> regards,
> Thomas
> --
> Am 12.02.2013 um 22:36 schrieb Andi Vajda <va...@apache.org>:
>
>>
>> Hi Thomas,
>>
>> On Tue, 12 Feb 2013, Thomas Koch wrote:
>>
>>> Thanks to your hints I was now able to build PyLucene4.1 and got further with the FacetExample.py - The imports should be OK now and most of the required changes are done I guess. However I now reached another problem: I need to instantiate the class 'FacetsCollector' but get an error when doing so:
>>>
>>> File "samples/FacetExample.py", line 222, in searchWithRequestAndQuery
>>>   facetsCollector = FacetsCollector(facetSearchParams, indexReader, taxoReader)
>>> NotImplementedError: ('instantiating java class', <type 'FacetsCollector'>)
>>>
>>> The java example has this line:
>>>   FacetsCollector facetsCollector = new FacetsCollector(facetSearchParams, indexReader, taxoReader);
>>> and javadocs state it has a public constructor:
>>> http://lucene.apache.org/core/4_1_0/facet/org/apache/lucene/facet/search/FacetsCollector.html#FacetsCollector(org.apache.lucene.facet.search.params.FacetSearchParams,%20org.apache.lucene.index.IndexReader,%20org.apache.lucene.facet.taxonomy.TaxonomyReader)
>>>
>>> So what could be the reason for this behavior?
>>
>> The FacetCollector class is declared abstract. Thus you can't instantiate it, constructor or not. I think the intent is to instantiate one of its concrete inner subclasses.
>> See lucene-java-4.1/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsCollector.java
>>
>>> I have another problem with the constructor of FacetSearchParams: it is expecting arguments:
>>> (List<FacetRequest> facetRequests, FacetIndexingParams indexingParams)
>>> but neither
>>> FacetSearchParams(Arrays.asList([facetRequest,]), indexingParams)
>>> nor
>>> FacetSearchParams([facetRequest,], indexingParams)
>>> does it here.  I get
>>>
>>> lucene.InvalidArgsError: (<type 'FacetSearchParams'>, '__init__', (<List: [root/a nRes=10 nLbl=10]>, <FacetIndexingParams: org.apache.lucene.facet.params.FacetIndexingParams@f97ad3c0>))
>>
>> There are four constructors on FacetSearchParams, none of which seems to match your call:
>>  public FacetSearchParams(FacetRequest... facetRequests)
>>  public FacetSearchParams(List<FacetRequest> facetRequests)
>>  public FacetSearchParams(FacetIndexingParams indexingParams, FacetRequest... facetRequests)
>>  public FacetSearchParams(FacetIndexingParams indexingParams, List<FacetRequest> facetRequests)
>>
>> See lucene-java-4.1/lucene/facet/src/java/org/apache/lucene/facet/params/FacetSearchParams.java
>>
>> You seem to be passing FacetIndexingParams last.
>>
>> Andi..
>>
>>
>>>
>>> I thought that JavaList could help, but I cannot import it:
>>>>>> from lucene.collections import JavaList
>>> Traceback (most recent call last):
>>> File "<stdin>", line 1, in <module>
>>> File "/Users/koch/.virtualenvs/pylucene/lib/python2.7/site-packages/lucene-4.1-py2.7-macosx-10.8-x86_64.egg/lucene/collections.py", line 17, in <module>
>>>   from org.apache.pylucene.util import \
>>> ImportError: No module named pylucene.util
>>>>>>
>>>
>>> That's probably because I had to disable in Makefile
>>> ## JARS+=$(HIGHLIGHTER_JAR)        # needs memory contrib
>>> ## JARS+=$(EXTENSIONS_JAR)         # needs highlighter contrib
>>>
>>> Do you think that's a type cast issue and that JavaList would help here?
>>> I need to define a 'typed' list , e.g. List<FacetRequest>
>>>
>>> FacetSearchParams API docs:
>>> http://lucene.apache.org/core/4_1_0/facet/org/apache/lucene/facet/search/params/FacetSearchParams.html
>>>
>>> Current version of FacetExample.py
>>> https://dl.dropbox.com/u/4384120/FacetExample.py
>>>
>>> Any hints?
>>>
>>> regards,
>>> Thomas
>>> --
>>> Am 12.02.2013 um 09:19 schrieb Andi Vajda <va...@apache.org>:
>>>
>>>>
>>>> On Tue, 12 Feb 2013, Andi Vajda wrote:
>>>>
>>>>> Indeed. I reproduced that error here.
>>>>> A new method was added to the FieldCache.Parser interface.
>>>>> I added it to the classes missing it (rev 1445048).
>>>>>
>>>>> I then found that the test case from hell, TestSort.java, has majorly changed again and test_Sort.py needs to be ported again. Sigh.
>>>>
>>>> That being said, you should be able to build PyLucene 4.1 again and proceed with FacetExample.py. The test_Sort.py needed work shouldn't be blocking you.
>>>>
>>>> Andi..
>>>
>>>
>
>

Re: FacetExample.py

Posted by Andi Vajda <va...@apache.org>.
On Mon, 8 Apr 2013, Thomas Koch wrote:

> Hi Andi,
> I could reproduce this and fixed it. A patch is available here:
> https://dl.dropbox.com/u/4384120/pylucene42-facetexample-patch-20130408.txt
>
> This is caused by change LUCENE-4700 in 4.2.1
> cf. http://lucene.apache.org/core/4_2_1/changes/Changes.html

Thank you, I integrated your fix into rev 1465882.
I think all is ready now for a release...

Andi..

>
> regards
> Thomas
> --
> Am 07.04.2013 um 00:22 schrieb Andi Vajda <va...@apache.org>:
>
>>
>> Hi Thomas,
>>
>> I resumed with the PyLucene samples migration and FacetExample.py is broken again because of another change in the facet module (I guess).
>> Namely, if you built PyLucene (trunk) against Lucene 4.2.1 by setting
>>
>> LUCENE_SVN=http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_4_2_1
>>
>> in the Makefile.
>>
>> Then:
>>  $ rm -rf lucene-java*
>>  $ make
>>  $ make test        (all should pass)
>>  $ make install
>>  $ python samples/FacetExample.py index    (seems to work)
>>  $ python samples/FacetExample.py simple
>>
>> you get this error:
>>
>>  AttributeError: type object 'FacetIndexingParams' has no attribute 'ALL_PARENTS'
>>
>> Could you please look into this, make FacetExample.py work again ?
>>
>> Thanks !
>>
>> Andi..
>>
>>
>> On Wed, 13 Feb 2013, Thomas Koch wrote:
>>
>>> Hi Andi,
>>> You're right - and API docs are wrong. Actually both must have change after 4.1 release: I checked the source of java-lucene v4.1 (lucene-4.1.0-src.tgz /  21-Jan-2013) and it matches the online javadocs. So I guess you're preparing for PyLucene v4.2?
>>>
>>> Note: I think that LUCENE_SVN=http://svn.apache.org/repos/asf/lucene/dev/branches/branch_4x is the "trunk" where 4.x development happens (i.e.  "unstable") whereas
>>> http://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_1/
>>> is the "stable" Lucene4.1/Solr4.1 branch (matching the 4.1 release and API docs). So if that's right (please correct me if I'm wrong) - why did you choose the branch_4x?
>>>
>>> Anyway, I fixed the FacetsExample.py for branch_4x now ,-)
>>>
>>> Some notes on API changes for those interested:
>>> -the 'new' FacetsCollector has a factory pattern now:
>>> public static FacetsCollector create(FacetSearchParams fsp, IndexReader indexReader, TaxonomyReader taxoReader)
>>> - the order of constructor arguments for FacetSearchParams has changed!
>>> - FacetResultNode has changed: it used to be an interface but is now a concrete class (and the method getSubResults of FacetResultNode disappeared)
>>> - DrillDown.query() became DrillDownQuery() - with a new API.
>>>
>>> Well, at least API docs state it:
>>> "WARNING: This API is experimental and might change in incompatible ways in the next release."
>>> So one should be warned...
>>>
>>> Here's the new version: https://dl.dropbox.com/u/4384120/FacetExample.py
>>> Or as patch to svn: https://dl.dropbox.com/u/4384120/FacetExample_patch_20130213.txt
>>>
>>> Thanks again for your help.
>>>
>>> regards,
>>> Thomas
>>> --
>>> Am 12.02.2013 um 22:36 schrieb Andi Vajda <va...@apache.org>:
>>>
>>>>
>>>> Hi Thomas,
>>>>
>>>> On Tue, 12 Feb 2013, Thomas Koch wrote:
>>>>
>>>>> Thanks to your hints I was now able to build PyLucene4.1 and got further with the FacetExample.py - The imports should be OK now and most of the required changes are done I guess. However I now reached another problem: I need to instantiate the class 'FacetsCollector' but get an error when doing so:
>>>>>
>>>>> File "samples/FacetExample.py", line 222, in searchWithRequestAndQuery
>>>>>  facetsCollector = FacetsCollector(facetSearchParams, indexReader, taxoReader)
>>>>> NotImplementedError: ('instantiating java class', <type 'FacetsCollector'>)
>>>>>
>>>>> The java example has this line:
>>>>>  FacetsCollector facetsCollector = new FacetsCollector(facetSearchParams, indexReader, taxoReader);
>>>>> and javadocs state it has a public constructor:
>>>>> http://lucene.apache.org/core/4_1_0/facet/org/apache/lucene/facet/search/FacetsCollector.html#FacetsCollector(org.apache.lucene.facet.search.params.FacetSearchParams,%20org.apache.lucene.index.IndexReader,%20org.apache.lucene.facet.taxonomy.TaxonomyReader)
>>>>>
>>>>> So what could be the reason for this behavior?
>>>>
>>>> The FacetCollector class is declared abstract. Thus you can't instantiate it, constructor or not. I think the intent is to instantiate one of its concrete inner subclasses.
>>>> See lucene-java-4.1/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsCollector.java
>>>>
>>>>> I have another problem with the constructor of FacetSearchParams: it is expecting arguments:
>>>>> (List<FacetRequest> facetRequests, FacetIndexingParams indexingParams)
>>>>> but neither
>>>>> FacetSearchParams(Arrays.asList([facetRequest,]), indexingParams)
>>>>> nor
>>>>> FacetSearchParams([facetRequest,], indexingParams)
>>>>> does it here.  I get
>>>>>
>>>>> lucene.InvalidArgsError: (<type 'FacetSearchParams'>, '__init__', (<List: [root/a nRes=10 nLbl=10]>, <FacetIndexingParams: org.apache.lucene.facet.params.FacetIndexingParams@f97ad3c0>))
>>>>
>>>> There are four constructors on FacetSearchParams, none of which seems to match your call:
>>>> public FacetSearchParams(FacetRequest... facetRequests)
>>>> public FacetSearchParams(List<FacetRequest> facetRequests)
>>>> public FacetSearchParams(FacetIndexingParams indexingParams, FacetRequest... facetRequests)
>>>> public FacetSearchParams(FacetIndexingParams indexingParams, List<FacetRequest> facetRequests)
>>>>
>>>> See lucene-java-4.1/lucene/facet/src/java/org/apache/lucene/facet/params/FacetSearchParams.java
>>>>
>>>> You seem to be passing FacetIndexingParams last.
>>>>
>>>> Andi..
>>>>
>>>>
>>>>>
>>>>> I thought that JavaList could help, but I cannot import it:
>>>>>>>> from lucene.collections import JavaList
>>>>> Traceback (most recent call last):
>>>>> File "<stdin>", line 1, in <module>
>>>>> File "/Users/koch/.virtualenvs/pylucene/lib/python2.7/site-packages/lucene-4.1-py2.7-macosx-10.8-x86_64.egg/lucene/collections.py", line 17, in <module>
>>>>>  from org.apache.pylucene.util import \
>>>>> ImportError: No module named pylucene.util
>>>>>>>>
>>>>>
>>>>> That's probably because I had to disable in Makefile
>>>>> ## JARS+=$(HIGHLIGHTER_JAR)        # needs memory contrib
>>>>> ## JARS+=$(EXTENSIONS_JAR)         # needs highlighter contrib
>>>>>
>>>>> Do you think that's a type cast issue and that JavaList would help here?
>>>>> I need to define a 'typed' list , e.g. List<FacetRequest>
>>>>>
>>>>> FacetSearchParams API docs:
>>>>> http://lucene.apache.org/core/4_1_0/facet/org/apache/lucene/facet/search/params/FacetSearchParams.html
>>>>>
>>>>> Current version of FacetExample.py
>>>>> https://dl.dropbox.com/u/4384120/FacetExample.py
>>>>>
>>>>> Any hints?
>>>>>
>>>>> regards,
>>>>> Thomas
>>>>> --
>>>>> Am 12.02.2013 um 09:19 schrieb Andi Vajda <va...@apache.org>:
>>>>>
>>>>>>
>>>>>> On Tue, 12 Feb 2013, Andi Vajda wrote:
>>>>>>
>>>>>>> Indeed. I reproduced that error here.
>>>>>>> A new method was added to the FieldCache.Parser interface.
>>>>>>> I added it to the classes missing it (rev 1445048).
>>>>>>>
>>>>>>> I then found that the test case from hell, TestSort.java, has majorly changed again and test_Sort.py needs to be ported again. Sigh.
>>>>>>
>>>>>> That being said, you should be able to build PyLucene 4.1 again and proceed with FacetExample.py. The test_Sort.py needed work shouldn't be blocking you.
>>>>>>
>>>>>> Andi..
>>>>>
>>>>>
>>>
>>>
>
>

Re: FacetExample.py

Posted by Thomas Koch <ko...@orbiteam.de>.
Hi Andi,
I could reproduce this and fixed it. A patch is available here:
https://dl.dropbox.com/u/4384120/pylucene42-facetexample-patch-20130408.txt

This is caused by change LUCENE-4700 in 4.2.1
cf. http://lucene.apache.org/core/4_2_1/changes/Changes.html

regards
Thomas
--
Am 07.04.2013 um 00:22 schrieb Andi Vajda <va...@apache.org>:

> 
> Hi Thomas,
> 
> I resumed with the PyLucene samples migration and FacetExample.py is broken again because of another change in the facet module (I guess).
> Namely, if you built PyLucene (trunk) against Lucene 4.2.1 by setting
> 
> LUCENE_SVN=http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_4_2_1
> 
> in the Makefile.
> 
> Then:
>  $ rm -rf lucene-java*
>  $ make
>  $ make test        (all should pass)
>  $ make install
>  $ python samples/FacetExample.py index    (seems to work)
>  $ python samples/FacetExample.py simple
> 
> you get this error:
> 
>  AttributeError: type object 'FacetIndexingParams' has no attribute 'ALL_PARENTS'
> 
> Could you please look into this, make FacetExample.py work again ?
> 
> Thanks !
> 
> Andi..
> 
> 
> On Wed, 13 Feb 2013, Thomas Koch wrote:
> 
>> Hi Andi,
>> You're right - and API docs are wrong. Actually both must have change after 4.1 release: I checked the source of java-lucene v4.1 (lucene-4.1.0-src.tgz /  21-Jan-2013) and it matches the online javadocs. So I guess you're preparing for PyLucene v4.2?
>> 
>> Note: I think that LUCENE_SVN=http://svn.apache.org/repos/asf/lucene/dev/branches/branch_4x is the "trunk" where 4.x development happens (i.e.  "unstable") whereas
>> http://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_1/
>> is the "stable" Lucene4.1/Solr4.1 branch (matching the 4.1 release and API docs). So if that's right (please correct me if I'm wrong) - why did you choose the branch_4x?
>> 
>> Anyway, I fixed the FacetsExample.py for branch_4x now ,-)
>> 
>> Some notes on API changes for those interested:
>> -the 'new' FacetsCollector has a factory pattern now:
>> public static FacetsCollector create(FacetSearchParams fsp, IndexReader indexReader, TaxonomyReader taxoReader)
>> - the order of constructor arguments for FacetSearchParams has changed!
>> - FacetResultNode has changed: it used to be an interface but is now a concrete class (and the method getSubResults of FacetResultNode disappeared)
>> - DrillDown.query() became DrillDownQuery() - with a new API.
>> 
>> Well, at least API docs state it:
>> "WARNING: This API is experimental and might change in incompatible ways in the next release."
>> So one should be warned...
>> 
>> Here's the new version: https://dl.dropbox.com/u/4384120/FacetExample.py
>> Or as patch to svn: https://dl.dropbox.com/u/4384120/FacetExample_patch_20130213.txt
>> 
>> Thanks again for your help.
>> 
>> regards,
>> Thomas
>> --
>> Am 12.02.2013 um 22:36 schrieb Andi Vajda <va...@apache.org>:
>> 
>>> 
>>> Hi Thomas,
>>> 
>>> On Tue, 12 Feb 2013, Thomas Koch wrote:
>>> 
>>>> Thanks to your hints I was now able to build PyLucene4.1 and got further with the FacetExample.py - The imports should be OK now and most of the required changes are done I guess. However I now reached another problem: I need to instantiate the class 'FacetsCollector' but get an error when doing so:
>>>> 
>>>> File "samples/FacetExample.py", line 222, in searchWithRequestAndQuery
>>>>  facetsCollector = FacetsCollector(facetSearchParams, indexReader, taxoReader)
>>>> NotImplementedError: ('instantiating java class', <type 'FacetsCollector'>)
>>>> 
>>>> The java example has this line:
>>>>  FacetsCollector facetsCollector = new FacetsCollector(facetSearchParams, indexReader, taxoReader);
>>>> and javadocs state it has a public constructor:
>>>> http://lucene.apache.org/core/4_1_0/facet/org/apache/lucene/facet/search/FacetsCollector.html#FacetsCollector(org.apache.lucene.facet.search.params.FacetSearchParams,%20org.apache.lucene.index.IndexReader,%20org.apache.lucene.facet.taxonomy.TaxonomyReader)
>>>> 
>>>> So what could be the reason for this behavior?
>>> 
>>> The FacetCollector class is declared abstract. Thus you can't instantiate it, constructor or not. I think the intent is to instantiate one of its concrete inner subclasses.
>>> See lucene-java-4.1/lucene/facet/src/java/org/apache/lucene/facet/search/FacetsCollector.java
>>> 
>>>> I have another problem with the constructor of FacetSearchParams: it is expecting arguments:
>>>> (List<FacetRequest> facetRequests, FacetIndexingParams indexingParams)
>>>> but neither
>>>> FacetSearchParams(Arrays.asList([facetRequest,]), indexingParams)
>>>> nor
>>>> FacetSearchParams([facetRequest,], indexingParams)
>>>> does it here.  I get
>>>> 
>>>> lucene.InvalidArgsError: (<type 'FacetSearchParams'>, '__init__', (<List: [root/a nRes=10 nLbl=10]>, <FacetIndexingParams: org.apache.lucene.facet.params.FacetIndexingParams@f97ad3c0>))
>>> 
>>> There are four constructors on FacetSearchParams, none of which seems to match your call:
>>> public FacetSearchParams(FacetRequest... facetRequests)
>>> public FacetSearchParams(List<FacetRequest> facetRequests)
>>> public FacetSearchParams(FacetIndexingParams indexingParams, FacetRequest... facetRequests)
>>> public FacetSearchParams(FacetIndexingParams indexingParams, List<FacetRequest> facetRequests)
>>> 
>>> See lucene-java-4.1/lucene/facet/src/java/org/apache/lucene/facet/params/FacetSearchParams.java
>>> 
>>> You seem to be passing FacetIndexingParams last.
>>> 
>>> Andi..
>>> 
>>> 
>>>> 
>>>> I thought that JavaList could help, but I cannot import it:
>>>>>>> from lucene.collections import JavaList
>>>> Traceback (most recent call last):
>>>> File "<stdin>", line 1, in <module>
>>>> File "/Users/koch/.virtualenvs/pylucene/lib/python2.7/site-packages/lucene-4.1-py2.7-macosx-10.8-x86_64.egg/lucene/collections.py", line 17, in <module>
>>>>  from org.apache.pylucene.util import \
>>>> ImportError: No module named pylucene.util
>>>>>>> 
>>>> 
>>>> That's probably because I had to disable in Makefile
>>>> ## JARS+=$(HIGHLIGHTER_JAR)        # needs memory contrib
>>>> ## JARS+=$(EXTENSIONS_JAR)         # needs highlighter contrib
>>>> 
>>>> Do you think that's a type cast issue and that JavaList would help here?
>>>> I need to define a 'typed' list , e.g. List<FacetRequest>
>>>> 
>>>> FacetSearchParams API docs:
>>>> http://lucene.apache.org/core/4_1_0/facet/org/apache/lucene/facet/search/params/FacetSearchParams.html
>>>> 
>>>> Current version of FacetExample.py
>>>> https://dl.dropbox.com/u/4384120/FacetExample.py
>>>> 
>>>> Any hints?
>>>> 
>>>> regards,
>>>> Thomas
>>>> --
>>>> Am 12.02.2013 um 09:19 schrieb Andi Vajda <va...@apache.org>:
>>>> 
>>>>> 
>>>>> On Tue, 12 Feb 2013, Andi Vajda wrote:
>>>>> 
>>>>>> Indeed. I reproduced that error here.
>>>>>> A new method was added to the FieldCache.Parser interface.
>>>>>> I added it to the classes missing it (rev 1445048).
>>>>>> 
>>>>>> I then found that the test case from hell, TestSort.java, has majorly changed again and test_Sort.py needs to be ported again. Sigh.
>>>>> 
>>>>> That being said, you should be able to build PyLucene 4.1 again and proceed with FacetExample.py. The test_Sort.py needed work shouldn't be blocking you.
>>>>> 
>>>>> Andi..
>>>> 
>>>> 
>> 
>>