2014-02-19 3 views
0

웹 페이지의 색인을 생성하는 Solr 인스턴스가 있는데 URL의 일부를 쿼리 할 수 ​​있기를 원합니다. 예 : en.wikipedia.org/wiki/Main_Pageen.wikipedia.org과 일치해야합니다.PathHierarchyTokenizerFactory가 URL을 분할하지 않습니다.

이 작업을 수행하기 위해 url_tokens 필드를 복사했습니다.이 필드는 내 url 필드에서 복사되고 인덱스 시간에 PathHierarchyTokenizerFactory을 사용하여 분석됩니다.

은 내가 url_tokens 필드 en.wikipedia.org/wiki/Main_Page, en.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 admin GUI의 anaysis screen을 사용하지 않았지만 URL을 올바르게 토큰 화했는지 확인하는 데 사용했습니다.

관련 문제