当前位置: 首页 > 知识库问答 >
问题:

Lucene中属性值对应的搜索

慕阳
2023-03-14

所有这些属性都来自第三方工具,Lucene本身并不涉及单词消歧。

我希望执行类似“pos=verb&number=singular”的查询,而不是在结果中得到“saw”。

我想把不同的语法注释编码成字符串,比如“L:see;pos:verb;t:pastl:saw;pos:noun;n:sg”,然后搜索regexp“pos\:verb[^\]+n\:sg”,但是由于性能问题,我绝对负担不起regexp查询。

以下是我的项目的细节:一个单词可以有一个固定的最大解析量(比如说,8个)。因此,我考虑在每个属性的有效载荷中插入解析号,并在Possting lists交叉阶段使用该有效载荷。例如,我们有一个用于“pos=动词”的张贴列表,如......1.1234......和一个用于“number=singular”的张贴列表:......2.1234......在处理pos=Verb和number=singular这样的查询时,在处理post list的所有阶段,'X.1234'条目都将被接受,直到交集阶段,在交集阶段,由于不对应的解析编号,这些条目将被拒绝。

我认为这是一个非常紧凑的解决方案,但将其合并到Lucene中有多难呢?

共有1个答案

金飞翼
2023-03-14

所以...这样做的欺骗方式是(实际上)控制如何构建lucene索引。

在构造lucene索引时,在lucene索引之前修改每个单词,使其包括该单词的所有必要属性。如果以这种方式索引,则必须以同样的方式进行查找。

一种方式:

示例

saw变成名词-saw--索引它。saw也变成名词过去-see--索引它为that。saw也变成名词-过去-单数-see-index为that。

另一种方式:

 类似资料:
  • 我正在构建一个实用程序函数,它应该搜索属性名称,并在找到后返回其值。它应该递归地执行此操作: 但是,控制台日志将永远消失,浏览器将崩溃。我做错了什么? 编辑: 这就是我调用函数的方式:

  • 我知道这里提到的弹性搜索和Lucene的区别。 Lucene和Elasticsearch有什么不同 弹性搜索除了可扩展性、容错性和分布性之外,两者的核心区别是什么。 弹性搜索提供了比Lucene更好的搜索功能吗?

  • 我想索引和搜索使用Lucene索引的数据片段。 例如。物品及其颜色 搜索示例 可能的解决办法 根据我在答案中发现的,显然我可以使用这种格式将这些添加到一个字段中。 如果我现在用这种格式的数据进行搜索,我不会得到任何结果。 null

  • 我有一个对象的arraylistTile有我想创建一个搜索函数,在这里我迭代遍历瓷砖的每个属性和arraylist中每个颜色内的每个属性(就像每个循环的嵌套),有没有一种简单的方法可以做到这一点?

  • 基于另一个子DTO的属性值从arraylist中搜索元素的最佳方法是什么。 场景:我有Employee对象,它有另一个ContactDetails对象。我需要从extNumber为1234的员工列表中查找员工(extNumber是ContactDetails中的属性。我需要在创建新员工和分配新ext时检查ext是否可用。 无法直接使用JDBC查询,因为我正在使用corba api。没有任何提供此类

  • 从对象中检索出给定选择器指定的一组属性。 对每个选择器使用 Array.map() ,使用 String.split('.') 来分割每个选择器,并使用 Array.reduce() 来获取它所指示的值。 const select = (from, ...selectors) => [...selectors].map(s => s.split('.').reduce((prev, cur)

  • 本文向大家介绍vue中的循环对象属性和属性值用法,包括了vue中的循环对象属性和属性值用法的使用技巧和注意事项,需要的朋友参考一下 v-for除了可以循环数组,还可以循环对象。 例子: 结果: 补充知识:Vue控制路由滚动行为 跳转路由时,要求跳转到指定路由的某个地方,可以使用scrollBehavior方法控制。 用法: scrollBehavior(to,from,savedPosition)

  • 我对Lucene是新来的。我试图有自定义属性的令牌。我能够获得分配给令牌的属性。然而,我意识到我们需要为我的每个属性大致有3个文件(接口类扩展属性,类扩展属性Impl和一个类扩展标记过滤器)? 我可能有大约50个属性需要分配。每个属性必须有3个文件吗?这大约是150个文件。