【发布时间】:2018-10-28 21:03:15
【问题描述】:
我想索引和搜索使用 Lucene 索引的数据片段。
例如物品及其颜色
Item 1 - Black
Item 2 - Yellow
Item 3 - Red
搜索示例
搜索词 - Item
Item 1 - Black
Item 2 - Yellow
Item 3 - Red
搜索词 - Item 1
Item 1 - Black
搜索词 - Item 2 - Yellow
Item 2 - Yellow
可能的解决方案
根据我在this 的答案中找到的内容,显然我可以使用这种格式将这些添加到字段中。
// {Item 1}|{Black}
document.add(new StringField("item", MessageFormat.format("'{'{0}'}'|'{'{1}'}'", itemName, itemColour, Field.Store.YES));
如果我现在用这种格式的数据进行搜索,我不会得到任何结果。
我正在使用StandardAnalyzer。
这就是我创建查询的方式。
QueryParser queryParser = new QueryParser("item", analyzer);
queryParser.setAllowLeadingWildcard(true);
Query query = queryParser.parse(keyword);
我想搜索:
- 具有匹配名称的所有项目
- 所有匹配且具有特定颜色的商品
解决这个问题的最佳方法是什么?
【问题讨论】: