2012-12-16 15 views
5

Mam parę wielowartościowych pól indeksu, autora i author_norm, i stworzyłem hierarchiczne pole aspektu dla nich przy użyciu wzór opisany pod numerem https://wiki.apache.org/solr/HierarchicalFaceting#Indexed_Terms. Wartości aspekt wyglądać następująco:Solr hierarchiczne aspekty: jak uzyskać wszystkie wartości drugiego poziomu dla najwyższych N wartości pierwszego poziomu

0/Blow, J 
1/Blow, J/Blow, Joe 
1/Blow, J/Blow, Joseph 
1/Blow, J/Blow, Jennifer 
0/Smith, M 
1/Smith, M/Smith, Michelle 
1/Smith, M/Smith, Michael 
1/Smith, M/Smith, Mike 

Autorzy są powiązane z zapisami artykułu, w większości przypadków artykuł będzie miał wielu autorów. Oznacza to, że w przypadku zapytania Solr zwracającego ponad 100 artykułów potencjalnie będzie reprezentowanych ponad 1000 autorów.

Mój problem polega na tym, że kiedy przechodzę do wyświetlania tej hierarchii użytkownikowi, ze względu na to, że mój facet.limit i facet.mincount są ustawione na rozsądne wartości, nie mam pełnego zestawu wartości drugiego poziomu, tj. drugi poziom mojej hierarchii zostanie w danym momencie odcięty. Ja mam coś takiego:

  • Blow, J (30)
    • cios, Joe (17)
    • Blow, Joseph (9)
  • Smith, M (22)
    • Smith, Michelle (14)
    • Smith, Michael (6)

Chciałbym również mieć "Blow, Jennifer (4)" i "Smith, Mike (2)" pozycje na tej liście, ale nie są zwracane w odpowiedzi bo mincount odcięcia jest 5. Tak więc kończę na mylącym wyświetlaczu (17 + 9! = 30, itp.).

Jedną z opcji jest umieszczenie małego linku "(więcej)" u dołu każdej listy drugiego poziomu i pobranie pełnego zestawu za pośrednictwem ajax. Nie szaleję za tym rozwiązaniem, ponieważ wymaga od użytkowników, aby pracowali/klikali więcej niż powinni, a także dlatego, że nie mogę kontrolować długości początkowego wpisu na drugim poziomie; czasem będzie to 3 nazwy + "(więcej)", czasami 2 lub nawet 1. To po prostu brzydkie.

Mogę ustawić mincount = 1 i limit = -1 tylko dla mojego pola aspektu hierarchicznego, ale to byłoby szalone, ponieważ dla dużego zapytania (100k trafień) chciałbym pobrać 100k + wartości, których nie potrzebuję. Potrzebuję tylko pełnego zestawu wartości drugiego poziomu dla najwyższych N wartości pierwszego poziomu.

Więc jeśli ktoś nie ma lepszej sugestii, zakładam, że muszę wykonać jakieś zapytanie uzupełniające. Po tym wszystkim, oto, o co naprawdę pytam: czy istnieje sposób na pobranie tych wartości drugiego poziomu w pojedynczym zapytaniu uzupełniającym. Biorąc pod uwagę początkową odpowiedź solr, w jaki sposób mogę uzyskać wszystkie permutacje na drugim poziomie tylko najwyższych N wartości pierwszego poziomu mojej hierarchii?

Dzięki!

PS, używam Solr 4.0.

+0

nie wiem rozumiem: filtrowanie aspektu pierwszego poziomu powinno zwracać tylko te aspekty drugiego poziomu pod wymienionym aspektem 1. poziomu? Biorąc pod uwagę, że mincount = 1 (= default) i gotowe. –

+0

hmm, stare pytanie .O dobrze –

+0

Spróbuj splicingu. Myślę, że to może rozwiązać Twój problem. http://wiki.apache.org/solr/SimpleFacetParameters#Pivot_.28ie_Decision_Tree.29_Faceting – Zouzias

Odpowiedz

0

Można modyfikować mincount na dowolnym poziomie w pivot:

facet.pivot=fieldA,filedB&f.fieldA.limit=3&f.fieldB.limit=-1 

Problemy rozpoczyna kiedy oba pola są takie same facet.pivot=fieldA,filedA w takim razie prawdopodobnie utworzyć kopię fieldA jak fieldB

Powiązane problemy