2014-04-15 54 views
0

最近,我问了一个关于如何检索所有术语(倒排索引)的docids的问题。请参考this question避免Solr中的两个查询

现在使用查询,

http://localhost:8983/solr/terms?terms.fl=tags&terms.sort=index 


    <response> 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">2</int> 
</lst> 
<lst name="terms"> 
<lst name="tags"> 
<int name="AbRam">2</int> 
<int name="Amitabh">2</int> 
<int name="Anjaam">2</int> 
<int name="Aryan">2</int> 
<int name="Baazigar">2</int> 
<int name="Bachchan">2</int> 
<int name="Barry">2</int> 
<int name="Biography">2</int> 
<int name="Bollywood">2</int> 
<int name="Chakde">2</int> 
</lst> 
</lst> 
</response> 

现在,找出所有这些方面,我将作出使用solrj到Solr的索引搜索的文档的ID。我确信我不需要查询两次,但找不到任何其他解决方案。是否有可能使用Lucene库(我试图使用Lucene访问solr索引来查看我是否可以检索与所有术语相对应的docid)。

回答

0

我并不完全确定这一点,但我最近也尝试过这一点,不相信这是可能的与条款组件开箱即用。欲了解更多信息,请点击this链接。

它说它直接使用Lucene的TermEnum遍历术语字典。我认为你可以尝试挖掘源代码并构建一个能够完成你想要完成的组件(我也查看过你的早期文章)。

我从来没有深入Solr的源代码自己,但看看一些API页面,它应该是相当容易的。使用TermEnum很容易获得所有条款。通过这些Terms,它应该相当容易地访问它们所属的文档(注意,这纯粹是假设的,我没有在Solr源代码中进行编码扩展)