MarkLogic and OCR

Author: Dave Cassel  |  Category: Software Development

This is pretty rough, but I’m tired of it being a draft. Comment if something’s unclear and I’ll clean it up.  This page is a tutorial on how to use OCR from MarkLogic. In particular, we’ll use MLJAM to call Tess4J, a Java wrapper around the open source tesseract-ocr. The tutorial assumes you’re running MarkLogic […]

Roxy and App Builder

Author: Dave Cassel  |  Category: Software Development

I’ve gotten very accustomed to using the Roxy with my MarkLogic projects. However, with the new App Builder available with MarkLogic 6, some of my projects are based on JavaScript and the REST API. I still want to use the Roxy deployer, however. The simplicity of deploying configuration and code with a few simple commands […]

Using the REST API to get values from a MapReduce Aggregation Function

Author: Dave Cassel  |  Category: Software Development

In a recent post, I showed how to build a simple MapReduce Aggregation function with MarkLogic 6. That’s a good start, but the next step is figuring out what we can do with it. At some point, we’ll probably want to display the values from the function to the user, maybe as part of an […]

Migrating an App Builder or REST API application

Author: Dave Cassel  |  Category: Software Development

In MarkLogic 6, Application Builder has gotten an overhaul. I really like the result — you can now get some interesting charts and maps set up just by clicking through the wizard, and the source code it deploys is easier to work with. There is one aspect that’s a bit tricky, however — migrating the […]

A MapReduce Aggregation Function in MarkLogic 6

Author: Dave Cassel  |  Category: Software Development

One of the new features in MarkLogic 6 is the ability to call out to C++ code to do Map/Reduce calculations. This lets you add any kind of aggregation function your project needs, in a highly performant way. You pass in one or more range indexes and MarkLogic farms them out to the stand level […]

MarkLogic Content Pump

Author: Dave Cassel  |  Category: Software Development

This morning, MarkLogic announced version 6 of the MarkLogic database. Lots of great stuff in this release (plenty of post material!). Let’s start with something simple, but very useful: copying data from one MarkLogic database to another with mlcp (MarkLogic Content Pump). Migrating Data In previous releases, there were a number of ways that you […]

A trick with cts:near-query

Author: Dave Cassel  |  Category: Software Development

A reader recently emailed me a question about an old post on the MarkLogic developer’s mailing list. The goal was to run a query such that an element’s value and an attribute on that element both matched. The problem was that the queries the asker built would match one element’s value and a different element’s […]

XML Data Modeling Suggestions

Author: Dave Cassel  |  Category: Software Development

Before I can talk about data modeling, I need to quickly address something else. At MarkLogic, we often talk about how we can take data as-is and do great stuff with it. If we can do great stuff with data as-is, why do we need to do data modeling? There are a couple reasons. First, […]


Author: Dave Cassel  |  Category: Career

My posts have been sparse over the last several months. That’s because I’ve been working on a MarkLogic book. For reasons I’m not going to get into here, I no longer plan to finish that book. The good news is that what I had written so far should give me a good number of blog […]

Wildcards in MarkLogic date queries

Author: Dave Cassel  |  Category: Software Development

I have another reader question today, also from Amit. To summarize, he’s using the Search API and has set up a range constraint like so:   <options xmlns=””>     <constraint name=”date”>    <range type=”xs:date” facet=”false”>         <element ns=”” name=”Date”/>       </range>     </constraint> </options> So far, so good. But the query that […]