Zas*_*asz 6 java lucene visualization solr data-visualization
亲爱的stackoverflow社区:
鉴于一些文本,我希望在文本中获得前50个最常用的单词,并从中创建一个标签云,从而以图形方式显示文本的内容.
该文本实际上是一组100左右的评论PER每个ITEM(一张图片)有大约120个项目,我还希望保持云更新 - 通过保持评论索引,并使用云生成代码每次运行新的网络请求出现了.
我决定使用Solr索引文本,现在想知道如何从Solr TermsVectorComponant中获得前50个单词.以下是术语矢量组件返回的结果示例,在您打开术语频率后,通过说tv.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>
Run Code Online (Sandbox Code Playgroud)
如你所见,我有两个问题:
有没有更好的办法?(或者)我可以告诉solr termvector组件以某种方式对它进行排序并为我提取100个吗?(或)我可以使用其他一些框架吗?我需要保留新的评论标记,因此标签云始终是最新的 - 对于云生成器,它需要一个加权单词的字典,并使其成为一个很好的图像.
这个答案没有帮助.
编辑 - 尝试jpountz和paige厨师的答案
这是我为此查询得到的结果:
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>
Run Code Online (Sandbox Code Playgroud)
我有50个这样的元素,@ jpountz感谢帮助限制结果,但为什么所有五十个单独的<int>元素都保持值1?我的想法是:数字1表示与我的查询匹配的文档的数量(自我通过Id:Guid查询后,它只能是一个)并且它们不代表单词的频率Post_Content
为了证明这一点,我从查询中删除了Id:GUID,结果是:
<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>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在文档中获取术语频率,而不是许多术语的文档频率.例如,我知道可引导的是我在Post_content中使用了6次的单词,所以我想要对一组文档进行排序,如(6,"可引导"),(5,"光盘").
这篇文章描述了如何设置标签云 - 使用Solr和PHP创建标签云.虽然PHP部分可能不适用于您,但我相信标签云的实际生成是......
本文介绍了使用空白标记生成器创建文本字段以返回单个单词,然后对该字段执行构面搜索的方法.我知道您可以设置方面限制,因此在您的情况下,您只能获得前100个结果.
我想出了一个权宜之计的解决方案:(为了举例,我将每个 solr 文档称为“帖子”)
Solr 中有一个 terms 组件,其目的似乎是公开任何给定字段的所有索引术语。它主要用于实现自动完成等功能以及在术语级别运行的其他功能。默认情况下,它按频率排序 - 该领域中出现频率更高的术语首先出现。
我所做的是创建一个名为的动态字段content_,并根据类别在其自己的字段中对每个帖子集进行索引。这意味着动态字段将有数百个实例,每个实例都包含一个帖子集,我可以使用该字段上的术语组件来获取该帖子集的热门术语。
如图:
content_postSetOne : contains indexed version of a set of posts
content_postSetTwo : contains indexed version of another set of posts
content_postSetThree : contains indexed version of a third set of posts
Run Code Online (Sandbox Code Playgroud)
这个解决方案对我来说有点有用,如果需要,您也可以轻松地为每个帖子创建一个字段。我也有兴趣了解使用这样的动态字段的含义:这会是一个问题吗?
这与 Paige 和 jPountz 的答案有何不同:
| 归档时间: |
|
| 查看次数: |
5971 次 |
| 最近记录: |