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.. >>>> >>>> >> >>