honza-rychtar / kramerius-web-client

Issue tracker pro webové rozhraní systému Kramerius
http://www.digitalniknihovna.cz/
8 stars 0 forks source link

Klient klade do SOLRu nevalidní dotazy #293

Closed leiblix closed 7 years ago

leiblix commented 7 years ago

Každou hodinu přijde do našeho Krameria z digitalniknihovna.cz kolem desítky nevalidních SOLR dotazů.

Např.: http://kramerius.mzk.cz/search/api/v5.0/search/?fl=PID,dc.title,dc.creator&q=dc.title:%22to*+AND+(fedora.model:monograph^4+OR+fedora.model:periodical^4+OR+fedora.model:map+OR+fedora.model:soundrecording+OR+fedora.model:graphic+OR+fedora.model:archive+OR+fedora.model:manuscript)+AND+(dostupnost:public^3+OR+dostupnost:private)&rows=20

Odpověď od SOLRu potom vypadá takto:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">400</int><int name="QTime">1</int><lst name="params"><str name="q">dc.title:"to* AND (fedora.model:monograph^4 OR fedora.model:periodical^4 OR fedora.model:map OR fedora.model:soundrecording OR fedora.model:graphic OR fedora.model:archive OR fedora.model:manuscript) AND (dostupnost:public^3 OR dostupnost:private)</str><str name="fl">PID,dc.title,dc.creator</str><str name="rows">20</str><str name="wt">xm</str></lst></lst><lst name="error"><lst name="metadata"><str name="error-class">org.apache.solr.common.SolrException</str><str name="root-error-class">org.apache.solr.parser.TokenMgrError</str></lst><str name="msg">org.apache.solr.search.SyntaxError: Cannot parse 'dc.title:"to* AND (fedora.model:monograph^4 OR fedora.model:periodical^4 OR fedora.model:map OR fedora.model:soundrecording OR fedora.model:graphic OR fedora.model:archive OR fedora.model:manuscript) AND (dostupnost:public^3 OR dostupnost:private)': Lexical error at line 1, column 248.  Encountered: &lt;EOF&gt; after : "\"to* AND (fedora.model:monograph^4 OR fedora.model:periodical^4 OR fedora.model:map OR fedora.model:soundrecording OR fedora.model:graphic OR fedora.model:archive OR fedora.model:manuscript) AND (dostupnost:public^3 OR dostupnost:private)"</str><int name="code">400</int></lst>
</response>

Můžeš s tím něco udělat?

Btw. Kramerius na to špatně reaguje chybou 500, ve skutečnosti by se měla vrátit chyba typu 400, protože je to chyba klienta. To opravíme (jen abys věděl).

honza-rychtar commented 7 years ago

Tohle se deje, kdyz zacnu vyhledavat s uvozovkama - v prubehu psani pak dotaz pro naseptavac obsahuje jen pocatecni uvozovky. Opravim to, zahodim uvozovky z dotazu pro naseptavac.

leiblix commented 7 years ago

Oprav nám to prosím, máme toho plnou administrační konzoli SOLRu...

honza-rychtar commented 7 years ago

Opravil jsem to a nahodil novou verzi (bez zmeny cislovani, takze se to nemusi u vsech hned projevit). Naseptavac ted nepovolene znaky bud zahazuje nebo escapuje (podle vyznamu a umisteni).