Deploying MarkLogic REST API service extensions

Author: Dave Cassel  |  Category: Software Development

When you deploy a custom service extension to MarkLogic’s REST API, where does it go? By default, service extensions are put in the Extensions database. This means that an extension is available to all applications on the MarkLogic instance. While I can see use cases where this is helpful, the servers I work on typically […]

Roxy Deployer and Application Builder

Author: Dave Cassel  |  Category: Software Development

This tutorial has been superseded by a more recent version, which makes the process easier.  I’ve had a couple people ask me how to use Roxy with MarkLogic‘s Application Builder. The answer has changed recently, so I think it’s time to offer a tutorial. I’m writing this with: MarkLogic 6.0-2.3 Roxy 1.4 (see the version.txt file […]

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, […]