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

Lucene-搜索多个关联值

景麒
2023-03-14

我想索引和搜索使用Lucene索引的数据片段。

例如。物品及其颜色

Item 1 - Black
Item 2 - Yellow
Item 3 - Red

搜索示例

Item 1 - Black
Item 2 - Yellow
Item 3 - Red
Item 1 - Black
Item 2 - Yellow

可能的解决办法

根据我在答案中发现的,显然我可以使用这种格式将这些添加到一个字段中。

// {Item 1}|{Black}
document.add(new StringField("item", MessageFormat.format("'{'{0}'}'|'{'{1}'}'", itemName, itemColour, Field.Store.YES));

如果我现在用这种格式的数据进行搜索,我不会得到任何结果。

QueryParser queryParser = new QueryParser("item", analyzer);
queryParser.setAllowLeadingWildcard(true);
Query query = queryParser.parse(keyword);
    null

共有1个答案

陈增
2023-03-14

如果您想在将来构建其他可能的搜索,我会建议文档采用不同的结构。这里是一个抽象的视图

new StringField("number", number);
new StringField("item", item);
new StringField("color", color);

除了这3个字段之外,还可以添加一个用于全文搜索的字段,包括这三个字段的所有信息。这将由textfield完成请参阅Lucene Field javadoc

new TextField("fulltext", item + " " + number + " " + "color");

这样,您就可以将全文搜索应用到“fulltext”字段,也可以直接对其他字段进行其他搜索。

 类似资料:
  • 本文向大家介绍Yii2 ActiveRecord多表关联及多表关联搜索的实现,包括了Yii2 ActiveRecord多表关联及多表关联搜索的实现的使用技巧和注意事项,需要的朋友参考一下 Yii的ActiveRecord是与数据库打交道的类,也即MVC中的M(模型层),也是ORM的O(Object)。 一个老生常谈的问题。最近通过群里的反馈,觉得很多人还是没有去理解这个问题。今天把这个问题讲明白了

  • bugu-mongo 2.x版本集成了Lucene的功能。当往MongoDB中新增一个Document时,能自动为该Document建立Lucene索引。相应的,当MongoDB中的Document被修改、删除时,对应的Lucene索引也会修改、删除。 另外,bugu-mongo还提供了对Lucene搜索的支持。根据Lucene索引进行搜索的时候,搜索结果能自动转换成对应的Entity对象。 在L

  • 我的任务是使用lucene在我们的产品表中搜索。我已经创建了一个索引,正在使用带有多个字段的QueryParser进行搜索,但结果不是我所需要的。我有一个存储为LM10的产品,但如果搜索词是LM 10,我希望能够找到它,但如果搜索词是Fred LM10或Fred LM 10,它也必须能够匹配。你知道我如何在Lucene做到这一点吗。 提前谢谢

  • 我在我的应用程序中使用Hibernate搜索。其中一个子集合映射为IndexeDemBedded。子对象有两个字段,一个是id,另一个是date(使用date resoultion到毫秒)。当我搜索ID=1(或某个值)并且date等于另一个值时,我会得到第一个和第二个匹配的所有情况的结果。我只想在同一个孩子中获得两个字段匹配的记录,但我在不同的孩子中获得匹配,结果会高得多。下面是代码片段 主类是用

  • 在测试此文本时,我在要在文本中搜索的列上创建了lucene(3.0.1)索引: 如果我按关键字搜索,它会给出结果,但按 我正在使用standardAnalyzer: 因为已设置,它应创建令牌,并且应存在$GLD。Analyzer将从文本中删除停止字,因为word也将在该过程中删除。

  • 我正在从flickrs API获取一些JSON。我的问题是exif数据的顺序因相机而异。所以我不能硬编码一个数组号来获得,例如,下面的相机型号。PHP是否有任何内置方法来搜索关联数组值并返回匹配数组?在下面的示例中,我想搜索