From 33890ccaea1315fa8d452709be08517356d18d13 Mon Sep 17 00:00:00 2001 From: pavels Date: Fri, 9 Feb 2018 14:24:18 +0100 Subject: [PATCH] Issue #576 --- build.gradle | 2 +- .../kramerius/client/AltoSupportServlet.java | 59 +-- .../incad/kramerius/client/tools/Search.java | 4 +- client/src/main/webapp/js/leftthumbs.js | 25 +- .../client/AltoSupportServletTest.java | 12 +- .../kramerius/indexer/ExtendedFields.java | 7 +- .../solr-6.x/kramerius/conf/managed-schema | 3 - .../incad/kramerius/services/BatchUtils.java | 41 +- .../kramerius/services/BatchUtilsTest.java | 113 ++++++ .../services/pdfsolr_no_text_ocr.xml | 91 +++++ .../kramerius/services/pdfsolr_text_ocr.xml | 363 ++++++++++++++++++ 11 files changed, 673 insertions(+), 47 deletions(-) create mode 100644 solr-migration/src/test/java/cz/incad/kramerius/services/BatchUtilsTest.java create mode 100644 solr-migration/src/test/resources/cz/incad/kramerius/services/pdfsolr_no_text_ocr.xml create mode 100644 solr-migration/src/test/resources/cz/incad/kramerius/services/pdfsolr_text_ocr.xml diff --git a/build.gradle b/build.gradle index d9035f2601..578a81f3ab 100644 --- a/build.gradle +++ b/build.gradle @@ -57,7 +57,7 @@ repositories { allprojects { group='cz.incad.kramerius' - version='5.4.0' + version='5.4.1' } diff --git a/client/src/main/java/cz/incad/kramerius/client/AltoSupportServlet.java b/client/src/main/java/cz/incad/kramerius/client/AltoSupportServlet.java index 55c1f6c472..e09ac9a3ee 100644 --- a/client/src/main/java/cz/incad/kramerius/client/AltoSupportServlet.java +++ b/client/src/main/java/cz/incad/kramerius/client/AltoSupportServlet.java @@ -6,10 +6,7 @@ import java.io.StringReader; import java.net.URLEncoder; import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; @@ -66,11 +63,16 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) String q = req.getParameter("q"); String pid = req.getParameter("pid"); try { - String query = URLEncoder.encode(q+" AND PID:"+pid.replace(":", "\\:"),"UTF-8"); - String searchUrl = KConfiguration.getInstance().getConfiguration().getString("api.point")+"/search?"+"q="+query+"&hl=true"; + + + String filterQuery = "PID:"+URLEncoder.encode(pid.replace(":", "\\:"),"UTF-8"); + String query = URLEncoder.encode(q,"UTF-8"); + String fieldList = URLEncoder.encode("text text_ocr text_ocr_lemmatized text_ocr_lemmatized_ascii", "UTF-8"); + + String searchUrl = KConfiguration.getInstance().getConfiguration().getString("api.point")+"/search?"+"fq="+filterQuery+"&q="+query+"&defType=edismax&qf="+fieldList+"&hl=true"; String xml = get(searchUrl, null, null); Document parsed = XMLUtils.parseDocument(new StringReader(xml)); - List hterms = findHighlightTerm(parsed.getDocumentElement(), pid); + Set hterms = findHighlightTerm(parsed.getDocumentElement(), pid); JSONObject jsonObject = new JSONObject(); for (String sterm : hterms) { String altoUrl = KConfiguration.getInstance().getConfiguration().getString("api.point")+"/item/"+pid+"/streams/ALTO"; @@ -79,7 +81,6 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) byte[] bytes = alto.getBytes(Charset.forName("UTF-8")); Document parsedAlto = XMLUtils.parseDocument(new ByteArrayInputStream(bytes)); - AltoDisected disected2 = cz.incad.kramerius.utils.ALTOUtils.disectAlto(sterm, parsedAlto); jsonObject.put(sterm, disected2.toJSON()); @@ -95,7 +96,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) } } - public static List findHighlightTerm(final Element elm, final String pid) { + public static Set findHighlightTerm(final Element elm, final String pid) { List elmRecursive = XMLUtils.getElementsRecursive(elm, new ElementsFilter() { @Override public boolean acceptElement(Element itm) { @@ -122,27 +123,39 @@ public boolean acceptElement(Element itm) { }); found.addAll(nfound); } - - List terms = new ArrayList(); + + List fieldList = Arrays.asList("text","text_ocr", "text_ocr_lemmatized", "text_ocr_lemmatized_ascii"); + Set terms = new HashSet<>(); for (Element docEl : found) { - List textArray = SOLRUtils.array(docEl, "text", String.class); - for (String text : textArray) { - String textContent = textContent(text); - if (textContent != null) { - terms.add(textContent); + + for (String fieldName : + fieldList) { + + List textArray = SOLRUtils.array(docEl, fieldName, String.class); + for (String text : textArray) { + if (text != null) { + String textContent = textContent(text); + if (textContent != null) { + terms.add(textContent); + } + } } - } - if (textArray.isEmpty()) { - String value = SOLRUtils.value(docEl, "text", String.class); - String textContent = textContent(value); - if (textContent != null) { - terms.add(textContent); + if (textArray.isEmpty()) { + String value = SOLRUtils.value(docEl, fieldName, String.class); + if (value != null) { + String textContent = textContent(value); + if (textContent != null) { + terms.add(textContent); + } + } } + } + } return terms; - } else return new ArrayList(); + } else return new HashSet<>(); } diff --git a/client/src/main/java/cz/incad/kramerius/client/tools/Search.java b/client/src/main/java/cz/incad/kramerius/client/tools/Search.java index bf9d0f7a52..8fdc05223a 100644 --- a/client/src/main/java/cz/incad/kramerius/client/tools/Search.java +++ b/client/src/main/java/cz/incad/kramerius/client/tools/Search.java @@ -352,8 +352,10 @@ public Map getUsedFilters() { private String getBoost(String q) { String ret = ""; - ret = "&defType=edismax&qf=text+" + ret = "&defType=edismax&qf=text+text_lemmatized+text_lemmatized_ascii^0.2+" + fieldsConfig.getMappedField("title") + "^4.0+" + + "title_lemmatized^4.0+" + + "title_lemmatized_ascii+" + fieldsConfig.getMappedField("autor") + "^1.5&bq=(level:0)^4.5" + "&bq=" + fieldsConfig.getMappedField("dostupnost") + ":\"public\"^1.2" + "&pf=text^10"; diff --git a/client/src/main/webapp/js/leftthumbs.js b/client/src/main/webapp/js/leftthumbs.js index 55d27455f3..ef29b710f6 100644 --- a/client/src/main/webapp/js/leftthumbs.js +++ b/client/src/main/webapp/js/leftthumbs.js @@ -235,15 +235,34 @@ LeftThumbs.prototype = { var q = "q="; if(searchFlag && authorFlag){ - q += "(text:" + $("#q").val()+" OR dc.creator:"+this._params()['author']+")"; + var qval = $("#q").val(); + var nestedQueries = ""; + if ( (qval.startsWith("\"") || qval.startsWith("'")) ) { + nestedQueries = "(_query_:\"{!edismax qf=text}"+qval+"\" )"; + } else { + nestedQueries = "(_query_:\"{!edismax qf=text}"+qval+"\" OR "; + nestedQueries += "_query_:\"{!edismax qf=text_lemmatized}"+qval+"\" OR " + nestedQueries += "_query_:\"{!edismax qf=text_lemmatized_ascii}"+qval+"\" ) "; + } + q += "("+nestedQueries+" OR dc.creator:"+this._params()['author']+")"; } else if(searchFlag){ - q += "(text:" + $("#q").val()+")"; + var qval = $("#q").val(); + var nestedQueries = ""; + if ( (qval.startsWith("\"") || qval.startsWith("'")) ) { + nestedQueries = "(_query_:\"{!edismax qf=text}"+qval+"\" )"; + } else { + nestedQueries = "(_query_:\"{!edismax qf=text}"+qval+"\" OR "; + nestedQueries += "_query_:\"{!edismax qf=text_lemmatized}"+qval+"\" OR " + nestedQueries += "_query_:\"{!edismax qf=text_lemmatized_ascii}"+qval+"\" ) "; + } + + q += nestedQueries; } else if(authorFlag){ q += "(dc.creator:"+this._params()['author']+")"; } q += "&rows=5000&fq=pid_path:" + pid_path.replace(/:/g, "\\:") + "*"; - var hl = authorFlag ? "&hl=true&hl.fl=text_ocr,dc.creator&hl.mergeContiguous=true&hl.snippets=2" : "&hl=true&hl.fl=text_ocr&hl.mergeContiguous=true&hl.snippets=2"; + var hl = authorFlag ? "&hl=true&hl.fl=text_ocr+text_ocr_lemmatized+text_ocr_lemmatized_ascii+dc.creator&hl.mergeContiguous=true&hl.snippets=2" : "&hl=true&hl.fl=text_ocr+text_ocr_lemmatized+text_ocr_lemmatized_ascii&hl.mergeContiguous=true&hl.snippets=2"; K5.api.askForSolr(q + hl, _.bind(function(data) { var numFound = data.response.numFound; diff --git a/client/src/test/java/cz/incad/kramerius/client/AltoSupportServletTest.java b/client/src/test/java/cz/incad/kramerius/client/AltoSupportServletTest.java index a2c7c475ba..4378c31209 100644 --- a/client/src/test/java/cz/incad/kramerius/client/AltoSupportServletTest.java +++ b/client/src/test/java/cz/incad/kramerius/client/AltoSupportServletTest.java @@ -6,8 +6,10 @@ import java.net.URL; import java.util.List; import java.util.Map; +import java.util.Set; import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -21,13 +23,13 @@ public class AltoSupportServletTest extends TestCase { - public void testFindTerms() throws IOException, ParserConfigurationException, SAXException { + public void testFindTerms() throws IOException, ParserConfigurationException, SAXException, TransformerException { URL url = AltoSupportServletTest.class.getResource("solr.xml"); InputStream openStream = url.openStream(); Document document = XMLUtils.parseDocument(openStream); - List terms = AltoSupportServlet.findHighlightTerm(document.getDocumentElement(),"uuid:5c243d40-3425-11e3-bd38-5ef3fc9ae867"); + Set terms = AltoSupportServlet.findHighlightTerm(document.getDocumentElement(),"uuid:5c243d40-3425-11e3-bd38-5ef3fc9ae867"); Assert.assertTrue(terms.size() == 1); - Assert.assertTrue(terms.get(0).equals("PROSA")); + Assert.assertTrue(terms.iterator().next().equals("PROSA")); } public void testFindAltos() throws ParserConfigurationException, SAXException, IOException { @@ -38,8 +40,8 @@ public void testFindAltos() throws ParserConfigurationException, SAXException, I openStream = alto.openStream(); Document altoDocument = XMLUtils.parseDocument(openStream); - - List terms = AltoSupportServlet.findHighlightTerm(solrDocument.getDocumentElement(),"uuid:5c243d40-3425-11e3-bd38-5ef3fc9ae867"); + + Set terms = AltoSupportServlet.findHighlightTerm(solrDocument.getDocumentElement(),"uuid:5c243d40-3425-11e3-bd38-5ef3fc9ae867"); for (String sterm : terms) { AltoDisected disected = ALTOUtils.disectAlto(sterm, altoDocument); Assert.assertNotNull(disected); diff --git a/indexer/src/cz/incad/kramerius/indexer/ExtendedFields.java b/indexer/src/cz/incad/kramerius/indexer/ExtendedFields.java index b735c17428..596d7ec50e 100644 --- a/indexer/src/cz/incad/kramerius/indexer/ExtendedFields.java +++ b/indexer/src/cz/incad/kramerius/indexer/ExtendedFields.java @@ -201,8 +201,11 @@ public String toXmlString(int pageNum) throws Exception { String[] pids = s.split("/"); if (pageNum != 0) { sb.append("").append(pids[pids.length - 1]).append(""); - sb.append("").append(getPDFPage(pageNum)).append(""); - + // TODO: Do it better. For now, i have to use any field which is aldrady defined + // in the future consider of interoducing field text_pdf + String pdfText = getPDFPage(pageNum); + sb.append("").append(pdfText).append(""); + } else { if (pids.length == 1) { sb.append("").append(pids[0]).append(""); diff --git a/installation/solr-6.x/kramerius/conf/managed-schema b/installation/solr-6.x/kramerius/conf/managed-schema index ae0a310775..8f078bc63f 100644 --- a/installation/solr-6.x/kramerius/conf/managed-schema +++ b/installation/solr-6.x/kramerius/conf/managed-schema @@ -590,7 +590,6 @@ - @@ -599,7 +598,6 @@ - @@ -608,7 +606,6 @@ - diff --git a/solr-migration/src/main/java/cz/incad/kramerius/services/BatchUtils.java b/solr-migration/src/main/java/cz/incad/kramerius/services/BatchUtils.java index 69922d37cf..47e9e03a8b 100644 --- a/solr-migration/src/main/java/cz/incad/kramerius/services/BatchUtils.java +++ b/solr-migration/src/main/java/cz/incad/kramerius/services/BatchUtils.java @@ -48,6 +48,19 @@ public boolean acceptElement(Element elm) { return batches; } + + /** find element by attribute */ + static Element findByAttribute(Element sourceDocElm, String attName) { + Element elemName = XMLUtils.findElement(sourceDocElm, new XMLUtils.ElementsFilter() { + @Override + public boolean acceptElement(Element element) { + return element.getAttribute("name").equals(attName); + } + }); + return elemName; + } + + /** find pid in source doc */ static String pid(Element sourceDocElm) { Element pidElm = XMLUtils.findElement(sourceDocElm, new XMLUtils.ElementsFilter() { @Override @@ -72,9 +85,9 @@ public static void transform(Element sourceDocElm, Document destDocument,Element if (node.getNodeType() == Node.ELEMENT_NODE) { List primitiveVals = Arrays.asList("str","int","bool", "date"); if (primitiveVals.contains(node.getNodeName())) { - simpleValue(pid, destDocument,destDocElem, node,null); + simpleValue(pid, destDocument,destDocElem, node,null, false); } else { - arrayValue(pid, destDocument,destDocElem,node); + arrayValue(pid,sourceDocElm, destDocument,destDocElem,node); } } } @@ -115,18 +128,18 @@ public boolean acceptElement(Element paramElement) { } - public static void simpleValue(String pid, Document ndoc, Element docElm, Node node, String derivedName) { + public static void simpleValue(String pid, Document feedDoc, Element feedDocElm, Node node, String derivedName, boolean dontCareAboutNonCopiingFields) { String attributeName = derivedName != null ? derivedName : ((Element)node).getAttribute("name"); - if (!nonCopiingField(attributeName)) { - Element strElm = ndoc.createElement("field"); + if (dontCareAboutNonCopiingFields || !nonCopiingField(attributeName)) { + Element strElm = feedDoc.createElement("field"); strElm.setAttribute("name", attributeName); - docElm.appendChild(strElm); + feedDocElm.appendChild(strElm); String content = StringEscapeUtils.escapeXml(node.getTextContent()); strElm.setTextContent(content); } } - public static void arrayValue(String pid, Document ndoc, Element docElm, Node node) { + public static void arrayValue(String pid,Element sourceDocElement, Document feedDoc, Element feedDocElement, Node node) { String attributeName = ((Element) node).getAttribute("name"); if (!nonCopiingField(attributeName)) { if (exceptionField(attributeName) && pid.contains("/@")) { @@ -134,7 +147,17 @@ public static void arrayValue(String pid, Document ndoc, Element docElm, Node no for (int i = 0,ll=childNodes.getLength(); i < ll; i++) { Node n = childNodes.item(i); if (n.getNodeType() == Node.ELEMENT_NODE) { - simpleValue(pid, ndoc,docElm, n, attributeName); + // exception again !!! uuugrrrr !!; + + // bug in pdf; text is filled directly to text field although text is copied field + // first we have to find text_ocr, if it doesn't exist, copy whole text to text, text_lemmatized, text_lemmatized_ascii and text_lemmatized_nostopwords + Element textOcr = findByAttribute(sourceDocElement, "text_ocr"); + if (textOcr == null) { + simpleValue(pid, feedDoc,feedDocElement, n, attributeName, false); + simpleValue(pid, feedDoc, feedDocElement, n,"text_lemmatized", true); + simpleValue(pid, feedDoc, feedDocElement, n,"text_lemmatized_ascii", true); + simpleValue(pid, feedDoc, feedDocElement, n,"text_lemmatized_nostopwords", true); + } } } } else if (!exceptionField(attributeName)) { @@ -142,7 +165,7 @@ public static void arrayValue(String pid, Document ndoc, Element docElm, Node no for (int i = 0,ll=childNodes.getLength(); i < ll; i++) { Node n = childNodes.item(i); if (n.getNodeType() == Node.ELEMENT_NODE) { - simpleValue(pid, ndoc,docElm, n, attributeName); + simpleValue(pid, feedDoc,feedDocElement, n, attributeName, false); } } } diff --git a/solr-migration/src/test/java/cz/incad/kramerius/services/BatchUtilsTest.java b/solr-migration/src/test/java/cz/incad/kramerius/services/BatchUtilsTest.java new file mode 100644 index 0000000000..6f63995db7 --- /dev/null +++ b/solr-migration/src/test/java/cz/incad/kramerius/services/BatchUtilsTest.java @@ -0,0 +1,113 @@ +package cz.incad.kramerius.services; + +import cz.incad.kramerius.service.MigrateSolrIndexException; +import cz.incad.kramerius.utils.XMLUtils; +import junit.framework.TestCase; +import org.junit.Assert; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import java.io.IOException; +import java.io.InputStream; + +import static cz.incad.kramerius.services.BatchUtils.*; + +public class BatchUtilsTest extends TestCase { + + public void testDefaultTransform() throws IOException, SAXException, ParserConfigurationException, TransformerException, MigrateSolrIndexException { + // nekopirovat text, spravne + Document feedDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + Element add = feedDocument.createElement("add"); + Element destDoc = feedDocument.createElement("doc"); + add.appendChild(destDoc); + feedDocument.appendChild(add); + + InputStream resourceAsStream = BatchUtilsTest.class.getResourceAsStream("solr.xml"); + Assert.assertNotNull(resourceAsStream); + + Document parsed = XMLUtils.parseDocument(resourceAsStream); + Element doc = XMLUtils.findElement(parsed.getDocumentElement(), "doc"); + transform(doc, feedDocument,destDoc); + + // must be defined as copiied field + Element text = BatchUtils.findByAttribute(destDoc, "text"); + Assert.assertNull(text); + + Element text_lemmatized = BatchUtils.findByAttribute(destDoc, "text_lemmatized"); + Assert.assertNull(text_lemmatized); + + Element text_lemmatized_ascii = BatchUtils.findByAttribute(destDoc, "text_lemmatized_ascii"); + Assert.assertNull(text_lemmatized_ascii); + + Element text_lemmatized_nostopwords = BatchUtils.findByAttribute(destDoc, "text_lemmatized_nostopwords"); + Assert.assertNull(text_lemmatized_nostopwords); + } + + public void testPdfNoTextOcrTransform() throws IOException, SAXException, ParserConfigurationException, TransformerException, MigrateSolrIndexException { + Document feedDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + Element add = feedDocument.createElement("add"); + Element destDoc = feedDocument.createElement("doc"); + add.appendChild(destDoc); + feedDocument.appendChild(add); + + InputStream resourceAsStream = BatchUtilsTest.class.getResourceAsStream("pdfsolr_no_text_ocr.xml"); + Assert.assertNotNull(resourceAsStream); + + Document parsed = XMLUtils.parseDocument(resourceAsStream); + Element doc = XMLUtils.findElement(parsed.getDocumentElement(), "doc"); + transform(doc, feedDocument,destDoc); + + Element text = BatchUtils.findByAttribute(destDoc, "text"); + Assert.assertNotNull(text); + + Element text_lemmatized = BatchUtils.findByAttribute(destDoc, "text_lemmatized"); + Assert.assertNotNull(text_lemmatized); + + Element text_lemmatized_ascii = BatchUtils.findByAttribute(destDoc, "text_lemmatized_ascii"); + Assert.assertNotNull(text_lemmatized_ascii); + + Element text_lemmatized_nostopwords = BatchUtils.findByAttribute(destDoc, "text_lemmatized_nostopwords"); + Assert.assertNotNull(text_lemmatized_nostopwords); + + } + + public void testPdfTextOcrTransform() throws IOException, SAXException, ParserConfigurationException, TransformerException, MigrateSolrIndexException { + Document feedDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + Element add = feedDocument.createElement("add"); + Element destDoc = feedDocument.createElement("doc"); + add.appendChild(destDoc); + feedDocument.appendChild(add); + + InputStream resourceAsStream = BatchUtilsTest.class.getResourceAsStream("pdfsolr_text_ocr.xml"); + Assert.assertNotNull(resourceAsStream); + + Document parsed = XMLUtils.parseDocument(resourceAsStream); + Element doc = XMLUtils.findElement(parsed.getDocumentElement(), "doc"); + transform(doc, feedDocument,destDoc); + + + Element text = BatchUtils.findByAttribute(destDoc, "text"); + Assert.assertNull(text); + + Element text_lemmatized = BatchUtils.findByAttribute(destDoc, "text_lemmatized"); + Assert.assertNull(text_lemmatized); + + Element text_lemmatized_ascii = BatchUtils.findByAttribute(destDoc, "text_lemmatized_ascii"); + Assert.assertNull(text_lemmatized_ascii); + + Element text_lemmatized_nostopwords = BatchUtils.findByAttribute(destDoc, "text_lemmatized_nostopwords"); + Assert.assertNull(text_lemmatized_nostopwords); + + Element text_ocr = BatchUtils.findByAttribute(destDoc, "text_ocr"); + Assert.assertNotNull(text_ocr); + + Element text_ocr_lemmatized = BatchUtils.findByAttribute(destDoc, "text_ocr_lemmatized"); + Assert.assertNull(text_ocr_lemmatized); + + } + +} diff --git a/solr-migration/src/test/resources/cz/incad/kramerius/services/pdfsolr_no_text_ocr.xml b/solr-migration/src/test/resources/cz/incad/kramerius/services/pdfsolr_no_text_ocr.xml new file mode 100644 index 0000000000..25ac095d4d --- /dev/null +++ b/solr-migration/src/test/resources/cz/incad/kramerius/services/pdfsolr_no_text_ocr.xml @@ -0,0 +1,91 @@ + + + + + 0 + 0 + + PID:"uuid:a0819a8d-2471-11e4-9632-001b63bd97ba/@1" + on + xml + + + + + uuid:a0819a8d-2471-11e4-9632-001b63bd97ba/@1 + page + + page + + true + 1 + + 1 + 6 m/ m m niiiiii 2530003578 + Z Á V Ě R E Č N Á Z P R Á V A + o resení grantu Interní grantové agentury Minisi m r v í Wliiii&WWrFW1 č» + P O D A T E L N A + Regis t račn í číslo: 2068 -3 + Název grantu: + ^ 16 - o , . ) 9 9 7 + ECHOKARDIOGRAFICKÉ HODNOCENI + VIABILNÍHO A NEKROTICKÉHO + MYOKARDU + Nositel grantu: Fakultní nemocnice v + (uvede se název a adresa řešitel.organizace) + Řešitel grantu: + (uvede se jméno řešitele a příp.kolektivu) + Motole, V úvalu 8 4 , 150 06 Praha + MODr. JANA POPELOVÁ, CSC. + Doba řešení: + (uvede se rok zahájení a ukončení projektu) + MUDr. Petr Janský + prof. MUDr. František Kolbel, + doc. MUDr. Kar e l Hlaváček,CSc + MUDr. Přemysl Šváb + 1994 - 1996 + + + + 1 + + + 1 + + + 1 + + 1 + Active + + 2014-08-15T13:45:17.077Z + 2018-02-06T09:18:09.944Z + private + application/pdf + true + + vc:c4dcf9c1-ca82-4b95-99ef-089e77ef3e93 + + + uuid:MED00111593/uuid:a0819a8d-2471-11e4-9632-001b63bd97ba/@1 + + + uuid:a0819a8d-2471-11e4-9632-001b63bd97ba + + + 0 + + + monograph/page/page + + Echokardiografické hodnocení viabilního a nekrotického myokardu + uuid:MED00111593 + 2 + 1997 + 1997 + 1997 + 1997 + 1591825078866149376 + 0 + + \ No newline at end of file diff --git a/solr-migration/src/test/resources/cz/incad/kramerius/services/pdfsolr_text_ocr.xml b/solr-migration/src/test/resources/cz/incad/kramerius/services/pdfsolr_text_ocr.xml new file mode 100644 index 0000000000..467bc634dc --- /dev/null +++ b/solr-migration/src/test/resources/cz/incad/kramerius/services/pdfsolr_text_ocr.xml @@ -0,0 +1,363 @@ + + + + + 0 + 0 + + PID:"uuid:aa3016bf-2471-11e4-9632-001b63bd97ba/@38" + on + xml + + + + + uuid:aa3016bf-2471-11e4-9632-001b63bd97ba/@38 + page + + page + + true + 38 + + 38 + - 36 - Popelová + c h a r a k t e r u j i z v y po IM ( 5 9 ) . Přítomnost kolaterál v akutní + fázi IM l i m i t u j e v e l i k o s t infarktového ložiska a zabrání + v z n i k u aneurysmatu (60,61). + V naší skupině pacientů s AIM došlo k remodelací levé + komory d l e námi zvolených kritérií u 9 z 2 0 pacientů, kteří + se d o s t a v i l i ke k o n t r o l e po 6-12 měsících od AIM, t o j e ve + 45% . U těchto pacientů došlo k signifikantnímu zvýšení + diastolického in d e x u s f e r i c i t y , na rozdíl od pacientů bez + remodelace, u kterých se i n d e x s f e r i c i t y signifikantně + nezměnil. + Metoda hodnocení remodelace pouhým srovnáním rozměrů + levé komory není z c e l a ideální, avšak na rozdíl od jiných + navrhovaných metod j e v e l m i jednoduchá, dobře + reprodukovateIná, s nízkou interindividuální v a r i a b i l i t o u + měření a nevyžaduje počítačovou t e c h n i k u a zvláštní zařízení. + Při porovnání nálezů v obou skupinách b y l ve skupině + s remodelací levé komory vyšší počet asynergických segmentů + v časné fázi AIM, avšak nález n e b y l s t a t i s t i c k y významný. Při + k o n t r o l e po roce se počet asynergických segmentů v obou + skupinách nelišil. V obou skupinách n e b y l signifikantní + rozdíl v počtu segmentů se zlepšením k i n e t i k y při DE a n i + v počtu segmentů se spontánním zlepšením k i n e t i k y . Nebyl + rovněž rozdíl ve včasnosti podání trombolytické t e r a p i e , + v obou skupinách se j e d n a l o o průměrnou dobu kratší než 4 + hodiny, n e b y l rozdíl ve druhu trombolytické léčby, ve všech + případech se j e d n a l o o streptokinázu. Trombolytická t e r a p i e + b y l a d l e klinických kritérií častěji úspěšná ve skupině bez + remodelace, rozdíl však n e b y l s t a t i s t i c k y významný. + S u t t o n n a l e z l d i l a t a c i levé komory po AIM v 33-38% + a dále n a l e z l k o r e l a c i mezi diastolickým indexem s f e r i c i t y + a m o r t a l i t o u či srdečním selháním ( 1 7 ) . + N e p o t v r d i l i jsme nález Modeny, který prokázal, že + p a c i e n t i s viabilním myokardem v o b l a s t i infarktové tepny + mají nízké r i z i k o remodelace ( 8 0 ) . Důvodem může být ztráta + v i a b i l i t y i relativně malý počet našich pacientů. + + + + 38 + - 36 - Popelová + c h a r a k t e r u j i z v y po IM ( 5 9 ) . Přítomnost kolaterál v akutní + fázi IM l i m i t u j e v e l i k o s t infarktového ložiska a zabrání + v z n i k u aneurysmatu (60,61). + V naší skupině pacientů s AIM došlo k remodelací levé + komory d l e námi zvolených kritérií u 9 z 2 0 pacientů, kteří + se d o s t a v i l i ke k o n t r o l e po 6-12 měsících od AIM, t o j e ve + 45% . U těchto pacientů došlo k signifikantnímu zvýšení + diastolického in d e x u s f e r i c i t y , na rozdíl od pacientů bez + remodelace, u kterých se i n d e x s f e r i c i t y signifikantně + nezměnil. + Metoda hodnocení remodelace pouhým srovnáním rozměrů + levé komory není z c e l a ideální, avšak na rozdíl od jiných + navrhovaných metod j e v e l m i jednoduchá, dobře + reprodukovateIná, s nízkou interindividuální v a r i a b i l i t o u + měření a nevyžaduje počítačovou t e c h n i k u a zvláštní zařízení. + Při porovnání nálezů v obou skupinách b y l ve skupině + s remodelací levé komory vyšší počet asynergických segmentů + v časné fázi AIM, avšak nález n e b y l s t a t i s t i c k y významný. Při + k o n t r o l e po roce se počet asynergických segmentů v obou + skupinách nelišil. V obou skupinách n e b y l signifikantní + rozdíl v počtu segmentů se zlepšením k i n e t i k y při DE a n i + v počtu segmentů se spontánním zlepšením k i n e t i k y . Nebyl + rovněž rozdíl ve včasnosti podání trombolytické t e r a p i e , + v obou skupinách se j e d n a l o o průměrnou dobu kratší než 4 + hodiny, n e b y l rozdíl ve druhu trombolytické léčby, ve všech + případech se j e d n a l o o streptokinázu. Trombolytická t e r a p i e + b y l a d l e klinických kritérií častěji úspěšná ve skupině bez + remodelace, rozdíl však n e b y l s t a t i s t i c k y významný. + S u t t o n n a l e z l d i l a t a c i levé komory po AIM v 33-38% + a dále n a l e z l k o r e l a c i mezi diastolickým indexem s f e r i c i t y + a m o r t a l i t o u či srdečním selháním ( 1 7 ) . + N e p o t v r d i l i jsme nález Modeny, který prokázal, že + p a c i e n t i s viabilním myokardem v o b l a s t i infarktové tepny + mají nízké r i z i k o remodelace ( 8 0 ) . Důvodem může být ztráta + v i a b i l i t y i relativně malý počet našich pacientů. + + + + 38 + - 36 - Popelová + c h a r a k t e r u j i z v y po IM ( 5 9 ) . Přítomnost kolaterál v akutní + fázi IM l i m i t u j e v e l i k o s t infarktového ložiska a zabrání + v z n i k u aneurysmatu (60,61). + V naší skupině pacientů s AIM došlo k remodelací levé + komory d l e námi zvolených kritérií u 9 z 2 0 pacientů, kteří + se d o s t a v i l i ke k o n t r o l e po 6-12 měsících od AIM, t o j e ve + 45% . U těchto pacientů došlo k signifikantnímu zvýšení + diastolického in d e x u s f e r i c i t y , na rozdíl od pacientů bez + remodelace, u kterých se i n d e x s f e r i c i t y signifikantně + nezměnil. + Metoda hodnocení remodelace pouhým srovnáním rozměrů + levé komory není z c e l a ideální, avšak na rozdíl od jiných + navrhovaných metod j e v e l m i jednoduchá, dobře + reprodukovateIná, s nízkou interindividuální v a r i a b i l i t o u + měření a nevyžaduje počítačovou t e c h n i k u a zvláštní zařízení. + Při porovnání nálezů v obou skupinách b y l ve skupině + s remodelací levé komory vyšší počet asynergických segmentů + v časné fázi AIM, avšak nález n e b y l s t a t i s t i c k y významný. Při + k o n t r o l e po roce se počet asynergických segmentů v obou + skupinách nelišil. V obou skupinách n e b y l signifikantní + rozdíl v počtu segmentů se zlepšením k i n e t i k y při DE a n i + v počtu segmentů se spontánním zlepšením k i n e t i k y . Nebyl + rovněž rozdíl ve včasnosti podání trombolytické t e r a p i e , + v obou skupinách se j e d n a l o o průměrnou dobu kratší než 4 + hodiny, n e b y l rozdíl ve druhu trombolytické léčby, ve všech + případech se j e d n a l o o streptokinázu. Trombolytická t e r a p i e + b y l a d l e klinických kritérií častěji úspěšná ve skupině bez + remodelace, rozdíl však n e b y l s t a t i s t i c k y významný. + S u t t o n n a l e z l d i l a t a c i levé komory po AIM v 33-38% + a dále n a l e z l k o r e l a c i mezi diastolickým indexem s f e r i c i t y + a m o r t a l i t o u či srdečním selháním ( 1 7 ) . + N e p o t v r d i l i jsme nález Modeny, který prokázal, že + p a c i e n t i s viabilním myokardem v o b l a s t i infarktové tepny + mají nízké r i z i k o remodelace ( 8 0 ) . Důvodem může být ztráta + v i a b i l i t y i relativně malý počet našich pacientů. + + + + 38 + - 36 - Popelová + c h a r a k t e r u j i z v y po IM ( 5 9 ) . Přítomnost kolaterál v akutní + fázi IM l i m i t u j e v e l i k o s t infarktového ložiska a zabrání + v z n i k u aneurysmatu (60,61). + V naší skupině pacientů s AIM došlo k remodelací levé + komory d l e námi zvolených kritérií u 9 z 2 0 pacientů, kteří + se d o s t a v i l i ke k o n t r o l e po 6-12 měsících od AIM, t o j e ve + 45% . U těchto pacientů došlo k signifikantnímu zvýšení + diastolického in d e x u s f e r i c i t y , na rozdíl od pacientů bez + remodelace, u kterých se i n d e x s f e r i c i t y signifikantně + nezměnil. + Metoda hodnocení remodelace pouhým srovnáním rozměrů + levé komory není z c e l a ideální, avšak na rozdíl od jiných + navrhovaných metod j e v e l m i jednoduchá, dobře + reprodukovateIná, s nízkou interindividuální v a r i a b i l i t o u + měření a nevyžaduje počítačovou t e c h n i k u a zvláštní zařízení. + Při porovnání nálezů v obou skupinách b y l ve skupině + s remodelací levé komory vyšší počet asynergických segmentů + v časné fázi AIM, avšak nález n e b y l s t a t i s t i c k y významný. Při + k o n t r o l e po roce se počet asynergických segmentů v obou + skupinách nelišil. V obou skupinách n e b y l signifikantní + rozdíl v počtu segmentů se zlepšením k i n e t i k y při DE a n i + v počtu segmentů se spontánním zlepšením k i n e t i k y . Nebyl + rovněž rozdíl ve včasnosti podání trombolytické t e r a p i e , + v obou skupinách se j e d n a l o o průměrnou dobu kratší než 4 + hodiny, n e b y l rozdíl ve druhu trombolytické léčby, ve všech + případech se j e d n a l o o streptokinázu. Trombolytická t e r a p i e + b y l a d l e klinických kritérií častěji úspěšná ve skupině bez + remodelace, rozdíl však n e b y l s t a t i s t i c k y významný. + S u t t o n n a l e z l d i l a t a c i levé komory po AIM v 33-38% + a dále n a l e z l k o r e l a c i mezi diastolickým indexem s f e r i c i t y + a m o r t a l i t o u či srdečním selháním ( 1 7 ) . + N e p o t v r d i l i jsme nález Modeny, který prokázal, že + p a c i e n t i s viabilním myokardem v o b l a s t i infarktové tepny + mají nízké r i z i k o remodelace ( 8 0 ) . Důvodem může být ztráta + v i a b i l i t y i relativně malý počet našich pacientů. + + + 38 + Active + + 2014-08-15T13:45:33.316Z + 2018-02-06T09:18:10.122Z + private + application/pdf + true + + vc:c4dcf9c1-ca82-4b95-99ef-089e77ef3e93 + + + uuid:MED00111593/uuid:aa3016bf-2471-11e4-9632-001b63bd97ba/@38 + + + uuid:aa3016bf-2471-11e4-9632-001b63bd97ba + + - 36 - Popelová + c h a r a k t e r u j i z v y po IM ( 5 9 ) . Přítomnost kolaterál v akutní + fázi IM l i m i t u j e v e l i k o s t infarktového ložiska a zabrání + v z n i k u aneurysmatu (60,61). + V naší skupině pacientů s AIM došlo k remodelací levé + komory d l e námi zvolených kritérií u 9 z 2 0 pacientů, kteří + se d o s t a v i l i ke k o n t r o l e po 6-12 měsících od AIM, t o j e ve + 45% . U těchto pacientů došlo k signifikantnímu zvýšení + diastolického in d e x u s f e r i c i t y , na rozdíl od pacientů bez + remodelace, u kterých se i n d e x s f e r i c i t y signifikantně + nezměnil. + Metoda hodnocení remodelace pouhým srovnáním rozměrů + levé komory není z c e l a ideální, avšak na rozdíl od jiných + navrhovaných metod j e v e l m i jednoduchá, dobře + reprodukovateIná, s nízkou interindividuální v a r i a b i l i t o u + měření a nevyžaduje počítačovou t e c h n i k u a zvláštní zařízení. + Při porovnání nálezů v obou skupinách b y l ve skupině + s remodelací levé komory vyšší počet asynergických segmentů + v časné fázi AIM, avšak nález n e b y l s t a t i s t i c k y významný. Při + k o n t r o l e po roce se počet asynergických segmentů v obou + skupinách nelišil. V obou skupinách n e b y l signifikantní + rozdíl v počtu segmentů se zlepšením k i n e t i k y při DE a n i + v počtu segmentů se spontánním zlepšením k i n e t i k y . Nebyl + rovněž rozdíl ve včasnosti podání trombolytické t e r a p i e , + v obou skupinách se j e d n a l o o průměrnou dobu kratší než 4 + hodiny, n e b y l rozdíl ve druhu trombolytické léčby, ve všech + případech se j e d n a l o o streptokinázu. Trombolytická t e r a p i e + b y l a d l e klinických kritérií častěji úspěšná ve skupině bez + remodelace, rozdíl však n e b y l s t a t i s t i c k y významný. + S u t t o n n a l e z l d i l a t a c i levé komory po AIM v 33-38% + a dále n a l e z l k o r e l a c i mezi diastolickým indexem s f e r i c i t y + a m o r t a l i t o u či srdečním selháním ( 1 7 ) . + N e p o t v r d i l i jsme nález Modeny, který prokázal, že + p a c i e n t i s viabilním myokardem v o b l a s t i infarktové tepny + mají nízké r i z i k o remodelace ( 8 0 ) . Důvodem může být ztráta + v i a b i l i t y i relativně malý počet našich pacientů. + + - 36 - Popelová + c h a r a k t e r u j i z v y po IM ( 5 9 ) . Přítomnost kolaterál v akutní + fázi IM l i m i t u j e v e l i k o s t infarktového ložiska a zabrání + v z n i k u aneurysmatu (60,61). + V naší skupině pacientů s AIM došlo k remodelací levé + komory d l e námi zvolených kritérií u 9 z 2 0 pacientů, kteří + se d o s t a v i l i ke k o n t r o l e po 6-12 měsících od AIM, t o j e ve + 45% . U těchto pacientů došlo k signifikantnímu zvýšení + diastolického in d e x u s f e r i c i t y , na rozdíl od pacientů bez + remodelace, u kterých se i n d e x s f e r i c i t y signifikantně + nezměnil. + Metoda hodnocení remodelace pouhým srovnáním rozměrů + levé komory není z c e l a ideální, avšak na rozdíl od jiných + navrhovaných metod j e v e l m i jednoduchá, dobře + reprodukovateIná, s nízkou interindividuální v a r i a b i l i t o u + měření a nevyžaduje počítačovou t e c h n i k u a zvláštní zařízení. + Při porovnání nálezů v obou skupinách b y l ve skupině + s remodelací levé komory vyšší počet asynergických segmentů + v časné fázi AIM, avšak nález n e b y l s t a t i s t i c k y významný. Při + k o n t r o l e po roce se počet asynergických segmentů v obou + skupinách nelišil. V obou skupinách n e b y l signifikantní + rozdíl v počtu segmentů se zlepšením k i n e t i k y při DE a n i + v počtu segmentů se spontánním zlepšením k i n e t i k y . Nebyl + rovněž rozdíl ve včasnosti podání trombolytické t e r a p i e , + v obou skupinách se j e d n a l o o průměrnou dobu kratší než 4 + hodiny, n e b y l rozdíl ve druhu trombolytické léčby, ve všech + případech se j e d n a l o o streptokinázu. Trombolytická t e r a p i e + b y l a d l e klinických kritérií častěji úspěšná ve skupině bez + remodelace, rozdíl však n e b y l s t a t i s t i c k y významný. + S u t t o n n a l e z l d i l a t a c i levé komory po AIM v 33-38% + a dále n a l e z l k o r e l a c i mezi diastolickým indexem s f e r i c i t y + a m o r t a l i t o u či srdečním selháním ( 1 7 ) . + N e p o t v r d i l i jsme nález Modeny, který prokázal, že + p a c i e n t i s viabilním myokardem v o b l a s t i infarktové tepny + mají nízké r i z i k o remodelace ( 8 0 ) . Důvodem může být ztráta + v i a b i l i t y i relativně malý počet našich pacientů. + + - 36 - Popelová + c h a r a k t e r u j i z v y po IM ( 5 9 ) . Přítomnost kolaterál v akutní + fázi IM l i m i t u j e v e l i k o s t infarktového ložiska a zabrání + v z n i k u aneurysmatu (60,61). + V naší skupině pacientů s AIM došlo k remodelací levé + komory d l e námi zvolených kritérií u 9 z 2 0 pacientů, kteří + se d o s t a v i l i ke k o n t r o l e po 6-12 měsících od AIM, t o j e ve + 45% . U těchto pacientů došlo k signifikantnímu zvýšení + diastolického in d e x u s f e r i c i t y , na rozdíl od pacientů bez + remodelace, u kterých se i n d e x s f e r i c i t y signifikantně + nezměnil. + Metoda hodnocení remodelace pouhým srovnáním rozměrů + levé komory není z c e l a ideální, avšak na rozdíl od jiných + navrhovaných metod j e v e l m i jednoduchá, dobře + reprodukovateIná, s nízkou interindividuální v a r i a b i l i t o u + měření a nevyžaduje počítačovou t e c h n i k u a zvláštní zařízení. + Při porovnání nálezů v obou skupinách b y l ve skupině + s remodelací levé komory vyšší počet asynergických segmentů + v časné fázi AIM, avšak nález n e b y l s t a t i s t i c k y významný. Při + k o n t r o l e po roce se počet asynergických segmentů v obou + skupinách nelišil. V obou skupinách n e b y l signifikantní + rozdíl v počtu segmentů se zlepšením k i n e t i k y při DE a n i + v počtu segmentů se spontánním zlepšením k i n e t i k y . Nebyl + rovněž rozdíl ve včasnosti podání trombolytické t e r a p i e , + v obou skupinách se j e d n a l o o průměrnou dobu kratší než 4 + hodiny, n e b y l rozdíl ve druhu trombolytické léčby, ve všech + případech se j e d n a l o o streptokinázu. Trombolytická t e r a p i e + b y l a d l e klinických kritérií častěji úspěšná ve skupině bez + remodelace, rozdíl však n e b y l s t a t i s t i c k y významný. + S u t t o n n a l e z l d i l a t a c i levé komory po AIM v 33-38% + a dále n a l e z l k o r e l a c i mezi diastolickým indexem s f e r i c i t y + a m o r t a l i t o u či srdečním selháním ( 1 7 ) . + N e p o t v r d i l i jsme nález Modeny, který prokázal, že + p a c i e n t i s viabilním myokardem v o b l a s t i infarktové tepny + mají nízké r i z i k o remodelace ( 8 0 ) . Důvodem může být ztráta + v i a b i l i t y i relativně malý počet našich pacientů. + + - 36 - Popelová + c h a r a k t e r u j i z v y po IM ( 5 9 ) . Přítomnost kolaterál v akutní + fázi IM l i m i t u j e v e l i k o s t infarktového ložiska a zabrání + v z n i k u aneurysmatu (60,61). + V naší skupině pacientů s AIM došlo k remodelací levé + komory d l e námi zvolených kritérií u 9 z 2 0 pacientů, kteří + se d o s t a v i l i ke k o n t r o l e po 6-12 měsících od AIM, t o j e ve + 45% . U těchto pacientů došlo k signifikantnímu zvýšení + diastolického in d e x u s f e r i c i t y , na rozdíl od pacientů bez + remodelace, u kterých se i n d e x s f e r i c i t y signifikantně + nezměnil. + Metoda hodnocení remodelace pouhým srovnáním rozměrů + levé komory není z c e l a ideální, avšak na rozdíl od jiných + navrhovaných metod j e v e l m i jednoduchá, dobře + reprodukovateIná, s nízkou interindividuální v a r i a b i l i t o u + měření a nevyžaduje počítačovou t e c h n i k u a zvláštní zařízení. + Při porovnání nálezů v obou skupinách b y l ve skupině + s remodelací levé komory vyšší počet asynergických segmentů + v časné fázi AIM, avšak nález n e b y l s t a t i s t i c k y významný. Při + k o n t r o l e po roce se počet asynergických segmentů v obou + skupinách nelišil. V obou skupinách n e b y l signifikantní + rozdíl v počtu segmentů se zlepšením k i n e t i k y při DE a n i + v počtu segmentů se spontánním zlepšením k i n e t i k y . Nebyl + rovněž rozdíl ve včasnosti podání trombolytické t e r a p i e , + v obou skupinách se j e d n a l o o průměrnou dobu kratší než 4 + hodiny, n e b y l rozdíl ve druhu trombolytické léčby, ve všech + případech se j e d n a l o o streptokinázu. Trombolytická t e r a p i e + b y l a d l e klinických kritérií častěji úspěšná ve skupině bez + remodelace, rozdíl však n e b y l s t a t i s t i c k y významný. + S u t t o n n a l e z l d i l a t a c i levé komory po AIM v 33-38% + a dále n a l e z l k o r e l a c i mezi diastolickým indexem s f e r i c i t y + a m o r t a l i t o u či srdečním selháním ( 1 7 ) . + N e p o t v r d i l i jsme nález Modeny, který prokázal, že + p a c i e n t i s viabilním myokardem v o b l a s t i infarktové tepny + mají nízké r i z i k o remodelace ( 8 0 ) . Důvodem může být ztráta + v i a b i l i t y i relativně malý počet našich pacientů. + + + 2 + + + monograph/page/page + + Echokardiografické hodnocení viabilního a nekrotického myokardu + uuid:MED00111593 + 2 + 1997 + 1997 + 1997 + 1997 + 1591832449265958912 + 0 + +