2011-08-03 46 views
3

我一直在试图对配置为solr.PathHierarchyTokenizerFactory的字段执行查询,但查询只是返回所有记录。看来,做一个方面查询只是不工作。有没有人有办法完成这个?我正在使用PathHierarchy来实现类别/子类别构面。SOLR - PathHierarchyTokenizerFactory方面查询

<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

感谢

回答

8

更改您的text_path字段定义以仅在索引时间应用PathHierarchyTokenizerFactory(以下示例)。你的问题是你的查询是由标记器处理的,所以fq = libraries:“/ test/subtest”实际上是针对fq =库进行查询的:(/ test/subtest OR/test)。

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

注意分析仪类型= “索引”

+0

小校正,类型= “指数”(小写索引) –

0

如果删除了小面的参数,会发生什么?它是否也返回所有文档?

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