2016-01-14 4 views
2

Я редко отношусь к solr. У меня есть вопрос относительно поиска определенных значений в запросе. Возможно, это неправильное понимание solrconfig и requesthandler.Solr - получение точных результатов по полю

Мой solrcfg выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" ?> 
<config> 
<luceneMatchVersion>5.2.0</luceneMatchVersion> 
<requestHandler name="get_window_results" class="solr.SearchHandler"> 
<lst name="defaults"> 
    <str name="defType">dismax</str> 
    <str name="qf">manufacturers_name^10.0 products_name^10.0 id_shop_color_ii^10.0 id_shop_color_i^10.0 id_shop_color_iii^10.0 ID^1.0</str> 
    <str name="pf">products_name</str> 
</lst> 
</requestHandler> 
<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers"/> 
</config> 

Мои SearchQuery выглядит следующим образом:

solr/window_search/select?q=id_shop_color_ii:"2"&wt=json&indent=true&qt=get_window_results 

В результате, я ожидал увидеть все id_shop_color_id_ii и соответствующее значение из 2. А затем все остальное, которое может иметь 2 в любом другом из трех цветовых полей. Тем не менее, мой первый результат выглядит следующим образом:

"id_shop_color_i": 2, 
"shop_color_short_i": "braun", 
    "shop_color_bez_i": "braun", 
    "id_shop_color_ii": 0, 
    "shop_color_short_ii": "", 
    "shop_color_bez_ii": "", 
    "id_shop_color_iii": 0, 
    "shop_color_short_iii": "", 

Это не имеет никакого смысла для меня, как я знаю, за то, что у меня есть id_shop_color_ii со значением 2. Тем не менее, они даже не были включены в первые 50 результатов. Кто-нибудь знает, где моя ошибка, или если у меня есть проблема в основном понимании solrcfg?

Благодаря KR Adi

+0

В вашем файле 'schema.xml', что такое тип поля для' id_shop_color_ii'? –

+0

Привет, это целое число. '<имя FieldType = класс "ИНТ"= "solr.TrieIntField" precisionStep = "0" omitNorms/= "истинный" positionIncrementGap = "0"> .... <имя поля = типа "id_shop_color_ii" = "int" indexed = "true" stored = "true" /> ' – Adi

+0

Вместо' q = id_shop_color_ii: "2" 'в вашем запросе попробуйте' q = 2' (оставьте оставшуюся часть запроса неповрежденной). Конфигурация вашего обработчика smax будет использовать параметр 'qf' для поиска' 2'. –

ответ

1

При использовании dismax анализатор запросов, как вы в вашем get_window_results обработчиком, вы можете просто передать ему свой термин запроса, и он будет искать против взвешенных полей, как это определено в обработчике. В вашем обработчике будет поле id_shop_color_id_ii. Поэтому вам просто нужно изменить свой запрос на это ...

solr/window_search/select?q=2&wt=json&indent=true&qt=get_window_results 
Смежные вопросы