2014-02-19 39 views
0

我有一個Solr實例,我在這裏索引網頁,我希望能夠查詢部分網址。例如。 en.wikipedia.org/wiki/Main_Page也應該自己匹配en.wikipedia.orgPathHierarchyTokenizerFactory不拆分網址

爲此,我創建了一個名爲url_tokens的字段,該字段從我的url字段複製而來,並在索引時使用PathHierarchyTokenizerFactory進行分析。

我認爲url_tokens領域將包含en.wikipedia.org/wiki/Main_Pageen.wikipedia.org/wikien.wikipedia.org,不過這是結果我從Solr管理查詢界面獲得:

... 
"url": "http://en.wikipedia.org/wiki/Main_Page", 
"url_tokens": [ 
    "http://en.wikipedia.org/wiki/Main_Page" 
], 
... 

我在做什麼錯?

這些都是我schema.xml中的相關部分:

<field name="url_tokens" type="url_tokens_type" indexed="true" stored="true" multiValued="true"/> 

<field name="url" type="url" indexed="true" stored="true"/> 

<copyField source="url" dest="url_tokens"/> 

<fieldType name="url" class="solr.TextField" positionIncrementGap="100">                     
    <analyzer>                         
    <tokenizer class="solr.StandardTokenizerFactory"/>              
    <filter class="solr.LowerCaseFilterFactory"/>                
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"/>              
    </analyzer>                         
</fieldType>   

<fieldType name="url_tokens_type" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.KeywordTokenizerFactory" /> 
    </analyzer> 
</fieldType> 
+1

你試過用'en.wikipedia.org'這樣的URL的一部分來查詢嗎? – buddy86

+0

@ buddy86謝謝你的評論讓我覺得我的方向是正確的。 – Boris

回答

0

我找到了答案。事情對我的設置工作正常,只是我期望錯誤的輸出。

我的預期,因爲我已經符號化使用PathHierarchyTokenizerFactory和領域進行了多值領域,我會得到的

"url_tokens": [ 
    "http://en.wikipedia.org/wiki/Main_Page" 
    "http://en.wikipedia.org/wiki" 
    "http://en.wikipedia.org" 
], 

一個結果,但我搜索了

"url_tokens": [ 
    "http://en.wikipedia.org/wiki/Main_Page" 
], 

的原因結果是因爲該字段已存儲。標記化的發生是因爲該字段也被編入索引,但這些標記從不出現在搜索結果中,它們僅用於選擇要顯示的結果。

我以前沒有使用solr管理GUI的anaysis screen,但我已經用它來確認URL正確地標記了。