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

Reply via email to