首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能用Lucene索引源代码吗?

我能用Lucene索引源代码吗?
EN

Stack Overflow用户
提问于 2013-04-11 20:31:38
回答 1查看 386关注 0票数 1

我想用Lucene索引源代码。源代码已经使用编译器插件进行了预分析。编译器的输出是源代码中出现的in列表。每个ID包括关于

  • ID在其中定义的模块(与在
  • 出现ID的源范围(即行:col-line:col),以及
  • 是否在此位置定义了ID,还是仅在此处使用。

例如,给定这个源代码模块(以伪代码表示)

代码语言:javascript
运行
复制
module MyModule
from MyOtherModule import bar
foo = ...
print bar

下面是编译器在编译MyModule时可能输出的内容

代码语言:javascript
运行
复制
MyModule.foo,3:1-3:3,definition
MyOtherModule.bar,4:7-4:9,use

注意输出中出现的所有ID是如何完全限定的,即使它们在源中可能不会这样显示。这就是我们使用编译器的原因,它允许我们进行更精确的代码搜索,而不仅仅是基于文本的搜索。

问题:是否有可能编写一个自定义标记器和分析器来索引上面显示的编译器输出,以便在对文档评分时保持元数据(即完全限定的ID,以及ID是否在给定的位置上定义或使用)可用?

更准确地说,我希望每个术语都与其定义的模块相关联(例如,foo将具有相关的元数据:定义module=MyModule)。我希望公告列表中的每个帖子都存储ID的这个特定外观是定义还是使用该ID。

此外,我希望Lucene将非限定ID存储为限定ID的同义词,这将允许用户搜索"foo“并检索包含ID "Module1.foo”和"Module2.foo“的所有文档。

EN

回答 1

Stack Overflow用户

发布于 2014-01-21 23:22:07

将各种属性放入Lucene字段可能更容易,这样您就可以进行如下查询:

代码语言:javascript
运行
复制
parse module:MyModule use:yes

它只会返回“MyModule”中的“解析”,其中使用的是“解析”,而不是定义的。

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

https://stackoverflow.com/questions/15958326

复制
相关文章

相似问题

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