使用 Lucene (PyLucene) 查找单个字段项
我对 Lucene 的术语向量相当陌生 - 并且希望确保我的术语收集尽可能高效。 我获取独特的术语,然后检索该术语的 docFreq() 以执行分面。
我使用以下方法从索引中收集所有文档术语:
lindex = SimpleFSDirectory(File(indexdir))
ireader = IndexReader.open(lindex, True)
terms = ireader.terms() #Returns TermEnum
这工作正常,但是有没有办法只返回特定字段(跨所有文档)的术语 - 这不是更有效吗?
例如:
ireader.terms(Field="country")
I'm fairly new to Lucene's Term Vectors - and want to make sure my term gathering is as efficient as it possibly can be.
I'm getting the unique terms and then retrieving the docFreq() of the term to perform faceting.
I'm gathering all documents terms from the index using:
lindex = SimpleFSDirectory(File(indexdir))
ireader = IndexReader.open(lindex, True)
terms = ireader.terms() #Returns TermEnum
This works fine, but is there a way to only return terms for specific fields (across all documents) - wouldn't that be more efficient?
Such as:
ireader.terms(Field="country")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
IndexReader.terms() 接受可选的 Field() 对象。
Field 对象由两个参数组成,Field Name 和 Value,lucene 称之为“Term Field”和“Term Text”。
通过为“术语文本”提供一个空值的 Field 参数,我们可以从我们关心的术语开始术语迭代。
希望其他搜索如何在 PyLucene 中执行分面的人能够看到这篇文章。关键是按原样索引术语。为了完整起见,这就是字段值的索引方式。
IndexReader.terms() accepts an optional Field() object.
Field objects are composed of two arguments, the Field Name, and Value which lucene calls the "Term Field" and the "Term Text".
By providing a Field argument with an empty value for 'term text' we can start our term iteration at the term we are concerned with.
Hopefully others searching for how to perform faceting in PyLucene will see come across this post. The key is indexing terms as-is. Just for completeness this is how field values should be indexed.