Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search Kentico自定义Lucene索引具有多个相似方面-如何查询?_Search_Indexing_Lucene_Kentico - Fatal编程技术网

Search Kentico自定义Lucene索引具有多个相似方面-如何查询?

Search Kentico自定义Lucene索引具有多个相似方面-如何查询?,search,indexing,lucene,kentico,Search,Indexing,Lucene,Kentico,我已经创建了一个自定义索引,它存储了我用来筛选的多个额外字段。例如,我正在存储一些面来选择风筝的颜色。有些风筝有一种颜色,有些有多种颜色 风筝A颜色:深蓝色红色橙色深红色 风筝B颜色:蓝色 风筝A的颜色有深蓝色、红色、橙色和深红色 这样的问题 +颜色:蓝色 将同时返回风筝a和风筝b,即使风筝a的颜色是深蓝色但不是蓝色。只应归还风筝B 我的问题是——我可能很难找到和回答,因为我不知道正确的术语,但我应该如何将值存储在lucene中,以便能够分离值(分隔符?)。此外,如何对查询进行词组化,以便在搜索

我已经创建了一个自定义索引,它存储了我用来筛选的多个额外字段。例如,我正在存储一些面来选择风筝的颜色。有些风筝有一种颜色,有些有多种颜色

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

风筝B颜色:蓝色

风筝A的颜色有深蓝色、红色、橙色和深红色

这样的问题 +颜色:蓝色 将同时返回风筝a和风筝b,即使风筝a的颜色是深蓝色但不是蓝色。只应归还风筝B

我的问题是——我可能很难找到和回答,因为我不知道正确的术语,但我应该如何将值存储在lucene中,以便能够分离值(分隔符?)。此外,如何对查询进行词组化,以便在搜索
颜色:红色它不返回值为“深红色”的行?如果我要搜索颜色:(深红色)它不会返回有“红色”但没有“深红色”的行。

看看搜索索引:搜索结果取决于analyzer类型+(页面类型、自定义表等)


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

这里有一个建议。你是要求访问者输入颜色(我想不是),还是你有一个他们可以检查过滤的过滤列表

如果它是一个过滤器列表,那么你可能想考虑使用“DurkyBlue”作为值,“深蓝”作为显示。用于内容输入和筛选。这样,过滤器的颜色将是:深蓝色


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

如果我在字段上禁用标记化,那么当我输入查询颜色:红色时,将不会返回任何内容。我查看了文档并尝试了不同的索引,但我希望得到一些关于如何存储数据以及如何在Lucene中查询数据的建议,这更像是一个Lucene问题而不是Kentico问题谢谢Rui,我可以试试。如果索引中的值为深蓝色-红色,如果过滤器为颜色:红色,是否仍会拾取该值?此外,lucene不会忽略u?如果颜色字段被标记化,那么深蓝色和红色将作为两个标记进行索引,而深蓝色应作为一个单词处理。