我们在我们的项目中索引各方,其中有名称,备用名称,不同的标识符,地址等。我们希望有严格的精确搜索功能,除了通常的搜索功能(没有倒置逗号)外,还可以使用单/双倒排逗号。
为了实现这一点,我们配置了两个不同的搜索处理程序,并根据用户输入中存在的反逗号在它们之间进行切换。此外,我们还使用for each one KeywordTokenizerFactory (用于严格精确匹配搜索)和StandardTokenizerFactory (用于常规搜索)对所有提到的参与方的属性进行索引。
但问题是Solr索引中的字段数量翻了一番,自然也增加了它的大小。
那么问题来了:是否可以在Solr索引中为每个参与方属性设置一个字段,从而实现这两种类型的搜索?
发布于 2016-09-23 23:19:41
如果您使用单个字段实现了相同的功能,那么索引中的数据量或多或少仍然是相同的。您搜索的令牌仍然必须存在并存储在某个地方,您最终会遇到一种令人困惑的情况,即很难对同一字段中包含的不同“类型”中的命中结果进行评分和排名(对于所有目的,这将是两个字段,只是名称相同。所以..。这是两个字段。)
使用当前的两个字段就可以做到这一点。但请记住,不必存储所有字段的内容(对于与其他字段具有相同值的字段,请使用stored="false" )。该值对于两个/所有字段都是相同的,所以只显示第一个字段的值,但是搜索两个字段/只搜索第一个字段/只搜索第二个字段。
减少索引大小的另一个选择是只存储字段的id,然后不存储任何其他字段。之后,通过从命中中查找id,从主数据存储中检索任何值。
还有针对特定字段的many options you can disable -根据您使用字段的方式,如termVectors等,可能不需要这些字段。
https://stackoverflow.com/questions/39663795
复制相似问题