我有一个要求,即当用反向或严格的字符串搜索时,用户应该能够获得相同的结果 例如:q =“F44”或q =“44F”应该得到相同的结果。
我创建了一个新字段“text_rev”,它被分配到以下字段类型。 我用实际/原始字段“retailId”
进行了复制字段<copyField source="retailId" dest="text_rev"/>
<fieldType name="text_rvsstr" class="solr.TextField"><analyzer><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.ReverseStringFilterFactory"/></analyzer></fieldType>
当我用q = text_rev:F44搜索时,我得到了结果,但是当我用q = text_rev:44F搜索时,我得到0结果。
请建议。
答案 0 :(得分:0)
这些搜索位于同一个字段中。搜索反向方向仅适用于反向字段,搜索向前方向仅适用于原始字段。
通过在两个字段中搜索相同的信息,您可以在一个查询中检查两个方向。
q = retailId:F44 OR text_rev:F44
答案 1 :(得分:0)
您需要搜索这两个字段。此外,如果您实际期望反向搜索,则需要具有非对称索引和查询类型定义。否则,你的术语在索引和查询过程中都会被反转,你实际上没有理由这样做。
您可以使用管理界面的分析屏幕并在两个框中提供内容来测试。然后,它将显示在索引/查询期间如何处理和匹配术语。