[
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-776?pag...
]
Elmer van Chastelet edited comment on HSEARCH-776 at 6/30/11 7:09 AM:
----------------------------------------------------------------------
I have currently fixed this issue by sorting the Map.Entry's before creating the
facets from them. Range facets and discrete facets now use their own comparator. In case
of RANGE_DEFINITION_ORDER, nothing changed (kinda useless to use RANGE_DEFINITION_ORDER
where maxFacetCount < #defined ranges). I've tried to think of a solution for
sorting on insertion/update in the FacetCounter class, but I couldn't come up with an
efficient one.
was (Author: elmer):
I have currently fixed this issue by sorting the Map.Entry's before creating the
facets from them. Range facets and discrete facets now use their own comparator. In case
of RANGE_DEFINITION_ORDER, nothing changed (kinda useless to use RANGE_DEFINITION_ORDER
where maxFacetCount < #defined ranges). I've tried to think of a solution for
sorting on insertion/update in the FacetCounter class, but I couldn't find an
efficient solution.
maxFacetCount returns incorrect results when ordering a faceted
query
---------------------------------------------------------------------
Key: HSEARCH-776
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-776
Project: Hibernate Search
Issue Type: Bug
Components: query
Affects Versions: 3.4.0.Final
Environment: hibernate 3.6.4, hibernate search 3.4
Reporter: Adrian Meredith
Priority: Critical
Fix For: 4.0.0.Alpha1
When putting a restriction on facets such as
{code}
FacetingRequest fr =
qb.facet().name("name").onField("someField").discrete().orderedBy(FacetSortOrder.COUNT_DESC).maxFacetCount(10).includeZeroCounts(false).createFacetingRequest();
{code}
I would expect the facets with the top 10 results to be returned which appears to be true
but it seems some are randomly missing (like the 10 are somehow spread across all results
as opposed to the top ten). Removing the max restriction and only returning the first ten
entries shows the correct results.
for example
{code}
QueryBuilder qb =
ftEm.getSearchFactory().buildQueryBuilder().forEntity(WebResult.class).get();
FacetManager fm = query.getFacetManager()
FacetingRequest fr =
qb.facet().name("name").onField("someField.id").discrete().orderedBy(FacetSortOrder.COUNT_DESC).includeZeroCounts(false).createFacetingRequest();
fm.enableFaceting(fr);
fm.getFacets("name").subList(0, endIndex);
{code}
The two code examples should return the exact same thing but the don't. The below
code is my workaround but as you can imaging this could potentially take a dangerous
amount of memory due to it effectively loading the entire index.
My WebResult class has OneToOne relations to various other objects (e.g. country)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira