У меня есть документы Solr, которые могут иметь 3 возможных состояния (state_s
в {new, updated, lost}). Эти документы имеют поле с именем ip_s
. Эти документы также имеют поле nlink_i
, которое может быть равно 0.Solr facet на подмножестве документов
Что я хочу знать: сколько новых ip_s у меня есть. Когда я рассматриваю новый ip, это ip, который принадлежит документу, который state_s="new"
, который не отображается ни в одном документе с state_s = "updated"
ИЛИ state_s = "lost"
.
Использование Solr поиска фаски Я нашел решение, используя следующие параметры запроса:
- Q = sate_s: "потерянное" + OR + sate_s: "обновленная"
- фаски = верно & facet.field = ip_s & facet.limit = -1
в принципе, все ф в
"facet_fields":{
"ip_s":[
"105.25.12.114",1,
"105.25.15.114",1,
"114.28.65.76",0,
...]
с наличием 0 (например, 114.28.65.76) являются «новыми ips».
Q1: Есть ли лучший способ для этого поиска. Поскольку использование описанного выше вопроса фасета мне еще нужно прочитать список ip_s и подсчитать весь ip с вступлением = 0.
Q2: Если я хочу сделать тот же поиск (т.е. получить новый ip), но я хочу рассматривать только документы, где nlink_i> 0, как я могу это сделать ?. Если я добавлю фильтр: fq=nlink_i:[1 TO *]
, все ip, появляющиеся в документах с link_i = 0, также будут иметь их число вхождения равным 0. Поэтому я не могу применить описанное выше решение, чтобы получить новый ip.
мне нужна 0 из них, мне нужно только их в основном, если я мог бы установить facet.maxcount = 0 Я бы, но это делает не существует. – lizzie
Я вижу - есть билет Solr о создании параметра facet.maxcount; Я не понимаю, как вы могли бы получить то, что хотите, без него через грань. Вы также можете посмотреть внутренние запросы; эта ссылка имеет отношение к вашему вопросу: http://stackoverflow.com/questions/24651759/solr-join-not-in-subselect – Yann