我一直在尝试对配置为solr.PathHierarchyTokenizerFactory的字段执行查询,但是查询仅返回所有记录。似乎执行方面查询无法正常工作。有谁能做到这一点?我正在使用PathHierarchy来实现类别/子类别方面。

<fieldType name="text_path" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
    </analyzer>
</fieldType>

<field name="libraries" type="text_path" indexed="true" stored="true" multiValued="true" />


http://linux2:8984/solr/select?q=*:*&rows=0&fq=libraries:"/test/subtest"&facet=true&facet.field=libraries&f.libraries.facet.sort=true&f.libraries.facet.limit=-1&f.libraries.facet.mincount=-1
谢谢

最佳答案

更改您的text_path字段定义以仅在索引时间应用PathHierarchyTokenizerFactory(下面的示例)。您的问题是 token 处理程序正在处理您的查询,因此fq = libraries:“/ test / subtest”实际上针对fq = libraries:(/ test / subtest OR / test)进行查询。

<fieldType name="text_path" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
    </analyzer>
</fieldType>

注意分析器的类型=“Index”

07-24 13:47