Criando uma nuvem de tags com solr

Dear stackoverflow community:

Dado algum texto, desejo obter as 50 palavras mais frequentes no texto, criar uma nuvem de tags e, assim, mostrar a essência do que é o texto de maneira gráfic

Otext é, na verdade, um conjunto de mais ou menos 100 comentários POR cada ITEM (uma foto), existem cerca de 120 itens e também quero manter a nuvem atualizada - mantendo os comentários indexados e usando o código de geração de nuvem para executar cada vez que um uma nova solicitação da web aparece.

Eu decidi usar o Solr para indexar o texto e agora me pergunto como obter as 50 melhores palavras do Solr TermsVectorComponant. Aqui está um exemplo dos resultados retornados pelos termos componente de vetor, depois de ativar a frequência do termo dizendotv.tf="true" :

  <lst name="doc-5">
    <str name="uniqueKey">MA147LL/A</str>    
    <lst name="includes">
      <lst name="cabl"><tf>5</tf></lst>
      <lst name="earbud"><tf>3</tf></lst>
      <lst name="headphon"><tf>10</tf></lst>
      <lst name="usb"><tf>11</tf></lst>
    </lst>
  </lst>

  <lst name="doc-9">
    <str name="uniqueKey">3007WFP</str>
    <lst name="includes">
      <lst name="cabl"><tf>5</tf></lst>
      <lst name="usb"><tf>4</tf></lst>
    </lst>
  </lst>

Como você pode ver, tenho 2 problemas:

Recebo todos os termos do documento, para esse campo, não apenas os 100 melhores E eles não são classificados por frequência, então eu tenho que obter termos e classificá-lo na memória para fazer o que estou tentand

Existe uma maneira melhor? (ou) Posso dizer ao componente solr termvector para classificá-lo de alguma forma e pegar apenas 100 para mim? (ou) Existe alguma outra estrutura que eu possa usar? Preciso manter os novos comentários indexados à medida que eles aparecem, para que a nuvem de tags esteja sempre atualizada - Quanto ao gerador de nuvens, ele pega um dicionário de palavras ponderadas e transforma-o em uma bela imagem.

Est resposta não ajuda.

EDIT - experimentando a resposta de jpountz e paige cook

Aqui está um resultado que obtive para esta consulta:

    select?q=Id:d4439543-afd4-42fb-978a-b72eab0c07f9&facet=true
&facet.field=Post_Content&facet.minCount=1&facet.limit=50

<int name="also">1</int>
<int name="ani">1</int>
<int name="anoth">1</int>
<int name="atleast">1</int>
<int name="base">1</int>
<int name="bcd">1</int>
<int name="becaus">1</int>
<int name="better">1</int>
<int name="bigger">1</int>
<int name="bio">1</int>
<int name="boot">1</int>
<int name="bootabl">1</int>
<int name="bootload">1</int>
<int name="bootscreen">1</int>

Eu tenho 50 desses elementos, @jpountz, obrigado por ajudar a limitar os resultados, mas por que TODOS os cinquenta anos do indivídu<int> elementos mantêm o valor1? Minha opinião é: O número 1 representa a contagem dos documentos correspondentes à minha consulta (que só pode ser um desde que eu perguntei por Id: Guid) e eles não representam a frequência das palavras emPost_Content

Para provar isso, removi o ID: GUID da consulta e o resultado foi:

<int name="content">33</int>
<int name="can">17</int>
<int name="on">16</int>
<int name="so">16</int>
<int name="some">16</int>
<int name="all">15</int>
<int name="i">15</int>
<int name="do">14</int>
<int name="have">14</int>
<int name="my">14</int>

Meu problema é como obter o termo frequência no documento, e não a frequência do documento em muitos termos. Por exemplo, eu sei que inicializável era uma palavra que usei 6 vezes em Post_content, então eu quero pares ordenados como (6, "inicializável"), (5, "disco") para um conjunto de documentos.

questionAnswers(3)

yourAnswerToTheQuestion