首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Lucene中获得词干词

在Lucene中获得词干词
EN

Stack Overflow用户
提问于 2010-11-20 21:29:53
回答 1查看 1.2K关注 0票数 2

在Lucene中,我使用SnowballAnalyzer进行索引和搜索。

当我构建索引时,我会对我的索引进行查询。例如,我为字段“body”做了一个“专用”查询。IndexSearcher返回包含“专门化、专门化等”的文档因为SnowballAnalyzer所做的堵塞。

现在-拥有顶级文档-我想从body字段中获得一个文本片段。这个片段应该包含查询词的词干版本。

例如,退回的一份文件中有“body”字段:“不幸的是,在一些州,盲人只能进入一般的康复机构,这些机构为各种残疾人提供服务,在这种情况下,并不总是能为视障者提供专门服务。然后,我希望得到的部分‘在这些情况下,专门为视觉服务’作为片段。另外,我想从这个片段中得到一些条款。代码将完成它,但有一个标记为“?”我要问的问题是:

我想要做的是IndexReader ir = IndexReader.open(fsDir);

代码语言:javascript
复制
             `TermPositionVector tv =   (TermPositionVector)ir.getTermFreqVector(hits.scoreDocs[i].doc, "body");` 

?-这里:查询-查询必须是术语。因此,如果真正的查询是“专门化的”,那么查询应该是专门化的,通常雪球分析器会做什么。如何让分析器分析单个单词或短语,因为查询可以包含一个短语:“专用机器”。

int idx = tv.indexOf(query);

代码语言:javascript
复制
             `int [] idxs = tv.getTermPositions(idx);`
代码语言:javascript
复制
             `for(String t : tv.getTerms()){`
代码语言:javascript
复制
                 `int iidx = tv.indexOf(t);`
代码语言:javascript
复制
                 `int [] iidxs = tv.getTermPositions(iidx);`
代码语言:javascript
复制
                 `for(int ni : idxs){`
代码语言:javascript
复制
                     `tmpValue = 0.0f;`
代码语言:javascript
复制
                     `for(int nni : iidxs){`
代码语言:javascript
复制
                         `if(Math.abs(nni-ni)<= Settings.termWindowSize){` 

编辑

我找到了获得词干术语的方法:

代码语言:javascript
复制
  `Query q = queryParser.parse("some text to be parsed");     String parsedQuery = q.toString();` 

有一个查询对象toString(字符串fieldName)的方法;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-21 09:33:55

我相信你混淆了几个问题。首先,要查看查询的词干版本和其他有用的信息,可以使用IndexSearcher的explain()方法。请看我对这个问题的回答

用于获取代码片段的Lucene解决方案是荧光笔。另一个选项是FastVectorHighlighter。我相信您可以定制这两个词,以获得词干术语,而不是完整的术语。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4235099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档