PathHierarchyTokenizerFactory不拆分网址

时间:2014-02-19 14:48:51

标签: solr tokenize

我有一个Solr实例,我在其中索引网页,我希望能够查询网址的部分内容。例如。 en.wikipedia.org/wiki/Main_Page也应该与en.wikipedia.org匹配。

为此,我创建了一个名为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 个答案:

答案 0 :(得分: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,但我已经用它来确认网址是否被正确标记。