2014-02-19 1 views
0

У меня есть экземпляр Solr, где я индексирую веб-страницы, и я хочу иметь возможность запрашивать некоторые части URL-адреса. Например. en.wikipedia.org/wiki/Main_Page также должен соответствовать en.wikipedia.org.PathHierarchyTokenizerFactory не разделяет URL-адреса

Для этого я создал поле под названием url_tokens, которое копируется из поля url и которое анализируется с использованием PathHierarchyTokenizerFactory по времени индекса.

Я думал, что url_tokens поле будет содержать en.wikipedia.org/wiki/Main_Page, en.wikipedia.org/wiki и en.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

Вы попробовали запрос с частью URL-адреса, например 'en.wikipedia.org' – 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" 
], 

в поиске результаты были связаны с тем, что поле хранилось. Токсификация происходит потому, что поле также было проиндексировано, но эти токены никогда не появляются в результатах поиска, они используются только для выбора результатов.

Я ранее не использовал anaysis screen графического интерфейса пользователя solr, но я использовал его для подтверждения правильности маркировки URL-адресов.

Смежные вопросы