Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 将Lucene搜索结果分组并按类别计算频率_Performance_Lucene_Lucene.net - Fatal编程技术网

Performance 将Lucene搜索结果分组并按类别计算频率

Performance 将Lucene搜索结果分组并按类别计算频率,performance,lucene,lucene.net,Performance,Lucene,Lucene.net,我正在使用Lucene开发商店搜索API 我需要显示每个城市的店铺搜索结果,括号中的州组合及其频率…例如: Los Angles,CA (450) Atlanta,GA (212) Boston, MA (78) . . . 到目前为止,如果用户说“显示所有商店”,我的搜索结果平均返回大约7000个Lucene文档。 在这个用例中,我最终展示了800条独特的城市、州记录,如上图所示 我重写了类的Collect方法并检索向量,如下所示: var vectors = _reader.GetTerm

我正在使用Lucene开发商店搜索API

我需要显示每个城市的店铺搜索结果,括号中的州组合及其频率…例如:

Los Angles,CA (450)
Atlanta,GA (212)
Boston, MA (78)
.
.
.
到目前为止,如果用户说“显示所有商店”,我的搜索结果平均返回大约7000个Lucene文档。 在这个用例中,我最终展示了800条独特的城市、州记录,如上图所示

我重写了类的
Collect
方法并检索向量,如下所示:

var vectors = _reader.GetTermFreqVectors(doc);
然后我迭代这个集合并计算每个独特的城市、州组合的频率

但这在性能上非常缓慢…在Lucene中有没有更好的方法来分组搜索结果和计算频率? 一段代码片段将非常有用

另外,请建议我是否可以使用任何其他技术/技巧优化我的Lucene搜索代码


谢谢你的阅读

我认为你目前无法在Lucene中实现OOTB-搜索此功能会产生以下问题:

不过,Solr提供了OOTB的功能,它提供了一个刻面特性。如以下所示的查询:

将返回以下结果:

<response>
<responseHeader><status>0</status><QTime>2</QTime></responseHeader>
<result numFound="4" start="0"/>
<lst name="facet_counts">
 <lst name="facet_queries"/>
 <lst name="facet_fields">
  <lst name="cat">
        <int name="search">0</int>
        <int name="memory">0</int>
        <int name="graphics">0</int>
        <int name="card">0</int>
        <int name="music">1</int>
        <int name="software">0</int>
        <int name="electronics">3</int>
        <int name="copier">0</int>
        <int name="multifunction">0</int>
        <int name="camera">0</int>
        <int name="connector">2</int>
        <int name="hard">0</int>
        <int name="scanner">0</int>
        <int name="monitor">0</int>
        <int name="drive">0</int>
        <int name="printer">0</int>
  </lst>
  <lst name="inStock">
        <int name="false">3</int>
        <int name="true">1</int>
  </lst>
 </lst>
</lst>
</response>

02
0
0
0
0
1.
0
3.
0
0
0
2.
0
0
0
0
0
3.
1.
有关镶嵌面的更多信息,请访问Solr网站:

编辑:如果您确实不想继续使用刻面技术,您可以利用此补丁中为Lucene介绍的功能:


它通过一个补丁在Lucene 2.0之上提供了刻面功能的实现

我不确定我是否理解你所说的“分组”是什么意思,但如果你只是想计算每个类别的文档数量,你应该看看

我的答案仍然站在那里,强硬的人似乎没有人喜欢它足够的投票给我…

史蒂夫,我相信你想要的。它不是由Lucene提供的。
我建议您尝试使用,这是一个主要且方便的功能。

您能回答这个问题吗?你能回答这个问题吗?