2015-04-24 2 views
0

Я работаю с apache solr и модулем для drupal 7 apachesolr. Некоторые из наших запросов очень обычны.Solr Query, проблема с синтаксисом с drupal apache solr module

Я искал в документации solr и объяснениях по stackoverflow. я пришел с запросом:

/select?q=&start=0&rows=20&fq=bundle:(message)&fq=sm_hashtags:(hashtags)&fq=(is_uid:(1 OR 2 OR 37 OR 38 OR 50 OR 166 OR 174 OR 198 OR 431 OR 499 OR 640 OR 642) AND is_privacy:(0)) AND -is_uid:(177 OR 189) AND is_status:(1)&fq=entity_id:{* TO 2666}&fl=tus_message_object,sm_hashtags,content,ts_search,is_privacy,is_status,is_uid&sort=entity_id+desc&wt=json&wt=json 

но это возвращает NULL, я попробовал несколько различных вещей, как:

/select?q=&start=0&rows=20&fq=bundle:(message)&fq=sm_hashtags:(hashtags)&fq=((is_uid:(1+OR+2+OR+37+OR+38+OR+50+OR+166+OR+174+OR+198+OR+431+OR+499+OR+640+OR+642)+is_privacy:(0))-is_uid:(177+OR+189)+is_status:(1))&fq=entity_id:{*+TO+2666}&fl=tus_message_object,sm_hashtags,content,ts_search,is_privacy,is_status,is_uid&sort=entity_id+desc&wt=json&wt=json 

Но я не уверен, что это правильно.

мне нужен фильтр, который позволяет пользователям с идентификатором (is_uid) и все те, с секретность 0, но не пользователи в списке заблокированных идентификаторов -is_uid и где статус 1.

ответ

0

Вы используете много предложений, поэтому очень сложно определить, что может быть причиной. Я могу дать вам следующие советы:

а) Режим отладки
Скопируйте всю строку запроса, перейдите в консоль администратора Solr и выполнить этот запрос с и дополнительной отладки = истинным или debugQuery = верно. В ответ на исходящей, Solr будет добавить дополнительный раздел, в котором он объясняет, как он «видит» Введенный запрос

б) изучить каждый FQ один за другим
Если есть проблема, то наверняка в фильтровать запросы, поэтому я предлагаю вам постепенно попробовать их по одному. Но до этого см. C) точку.

с) FQ дизайн
фильтров запросов являются большими для своих возможностей кэширования. Здесь, хотя есть некоторые fq, которые, как я думаю, не будут многократно использоваться (фильтр is_uid), я предлагаю вам разбить эти запросы, чтобы получить лучшие результаты повторного использования (т. Е. Кэшированные); что-то вроде:

fq=bundle:message // You already have this 
fq=sm_hashtags:hashtags // You already have this 
fq=is_privacy:0 // this will cache (for further reuse) all documents with no privacy 
fq=is_status:1 // this will cache (for further reuse) all documents with status 1 
fq=is_uid(1 OR 921 OR 9...) // Most probably these query results won't benefit so much of caching. If so, I think this query could be also part of the main query 
fq=-is_uid(8 OR 99) // Most probably these query results won't benefit so much of caching. If so, I think this query could be also part of the main query 
+0

Спасибо, я дал мне много информации для работы. – KatsuoRyuu

0

Вы ничего не спрашиваете ни о каких полях q=. Попробуйте q=*:* или что-нибудь в любом поле. Лучший способ отладки solr заключается в том, чтобы вручную создать запрос в построителе запросов solr, обычно http://localhost:8983/solr и посмотреть, с чем он возвращается.

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