2011-08-03 44 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參數中傳遞的過濾器查詢由於某種原因而不起作用。