lucene-pylucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andi Vajda <va...@apache.org>
Subject Re: FacetExample.py
Date Tue, 09 Apr 2013 05:09:47 GMT

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

Mime
View raw message