4

我一直在尝试对配置为 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

谢谢

4

2 回答 2

10

更改您的 text_path 字段定义以仅在索引时应用 PathHierarchyTokenizerFactory(下面的示例)。您的问题是您的查询正在由标记器处理,因此 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>

注意分析器 type="Index"

于 2012-02-03T19:07:20.067 回答
0

如果删除分面参数会发生什么?它是否也返回所有文件?

在我看来,分面不应该对搜索结果产生影响。在我看来,您在 fq 参数中传递的过滤器查询由于某种原因不起作用。

于 2011-12-09T08:59:24.777 回答