2016-08-26 8 views
2

Я довольно новичок в Solr, поэтому я не знаю, действительно ли то, что я хотел бы достичь, реально или нет. В настоящее время я запрашиваю у своего Solr, чтобы получить количество результатов, соответствующих условиям в нескольких фасетных запросах. Например:Получить результаты от Solr facets

localhost:8082/solr/dict/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.query=dict1:"#tiger#"&facet.query=dict1:"#lion#" 

При таком запросе, я получаю кол Solr документы, содержащие «тигра» и подсчет тех cointaining «лев», в поле «dict1»:

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 239, 
    "params": { 
     "facet.query": [ 
     "dict1:\"#tiger#\"", 
     "dict1:\"#lion#\"" 
     ], 
     "q": "*:*", 
     "indent": "true", 
     "rows": "0", 
     "wt": "json", 
     "facet": "true" 
    } 
    }, 
    "response": { 
    "numFound": 37278987, 
    "start": 0, 
    "docs": [ ] 
    }, 
    "facet_counts": { 
    "facet_queries": { 
     "dict1:\"#tiger#\"": 6, 
     "dict1:\"#lion#\"": 10 
    }, 
    [...] 
    } 
} 

дело в том, что теперь мне нужно получить также некоторые результаты для каждой грани, кроме как кол (например, три результата для «тигра» и еще три для «лев»)

Я прочитал некоторые подобные вопросы (Solr Facetting - Showing First 10 results and Other или SOLR - Querying Facets, return N results per Facet), но не Их ответы, похоже, работают на меня, возможно, потому, что я делаю грани на всех документах (q=*:*).

Любая помощь будет приветствоваться :)

+0

Я не знаю, как ваш случай отличается от стратегии группировки, описанной в последней ссылке вы включены? – MatsLindh

+0

Потому что мой поиск \ *: \ *, я имею в виду, я выполняю фасет, чтобы соответствовать тигру или льву по всем элементам, а стратегия, указанная в последней ссылке, заключается в том, что запрос «делает что-то» ». Например, если я запрашиваю с «dict1: тигр», а затем добавляю групповую фильтрацию, как во второй ссылке, это вроде работает, но это не нужный подход ... – motagirl2

ответ

1

Как в списке рассылки, как насчет просто используя группировку?

solr/hotels/search?q=*%3A*&wt=json&indent=true&group=true&group.query=query1&group.query=query2&group.limit=3 [1] 

Это нормально для вас? Это возвращает 2 группы (1 на запрос) с соответствующим количеством и максимальным количеством документов.

[1] https://cwiki.apache.org/confluence/display/solr/Result+Grouping

+0

Спасибо! Мне удается получить результаты по своему усмотрению: /select?q=*:*&wt=json&indent=true&facet=true&group=true&group.query=dict1:tiger&group.query=dict1:lion&group.limit=2 Единственное, что это запрос слишком медленный:/(от 0,2 с до 2 секунд) – motagirl2

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