Kentico Custom Lucene Index与多个方面相似 - 如何查询?

时间:2017-10-27 03:44:23

标签: search indexing lucene kentico

我创建了一个自定义索引,用于存储我用来过滤的多个额外字段。比方说,我正在存储一些方面来选择风筝颜色。有些风筝有一种颜色,有些有多种。

风筝颜色:深蓝色,红色,橙色,深红色

风筝B颜色:蓝色

风筝A颜色为深蓝色,红色,橙色和深红色。

这样的查询 +颜色:蓝色 将返回风筝和风筝b,即使风筝A颜色是深蓝色但不是蓝色。只应返回风筝B.

我的问题是这个 - 我可能很难找到并回答因为我不知道正确的术语,但我应该如何将值存储在lucene中以便我可以分离值(分隔符?)。另外,如果我搜索,如何对查询进行短语 color:red它不返回具有颜色值的行:“deep red”?如果我要搜索颜色:(深红色)它不会返回有“红色”而不是“深红色”的行

2 个答案:

答案 0 :(得分:1)

查看搜索索引analyzer types:搜索结果取决于分析器类型+ search settings of the object(页面类型,自定义表格等)。

我认为颜色字段在搜索设置中被标记为标记化,这就是为什么它返回与字段值的各个标记(子集)匹配的结果。如果标记化已禁用,则只有在字段的完整值与搜索表达式完全匹配时,搜索才会返回项目。

答案 1 :(得分:0)

这里有一个建议。您是要求访问者输入颜色(我假设没有),或者您有可以检查过滤器的过滤器列表?

如果是过滤器列表,那么您可能需要考虑使用“dark_blue”作为值,使用“深蓝色”作为显示。用于内容输入和过滤。这样,过滤器就是颜色:dark_blue。

然后您的索引可以使用“起始宽度”作为分析器类型,因此当搜索“深蓝色”时,它会将“dark_blue”视为值,“蓝色”将不会返回。然后,当搜索“蓝色”时,“dark_blue”将不会显示,因为它不会以“蓝色......”开头。