Solutions

MarkLogic Data Hub Service

Fast data integration + improved data governance and security, with no infrastructure to buy or manage.

Learn More

Learn

Stay On Top Of Everything MarkLogic

Be the first to know! News, product information, and events delivered straight to your inbox.

Sign Me Up

Community

MarkLogic World 2019

Learn how to simplify data integration & build innovative applications. Join us in Washington D.C. May 14-15!

Find Out More

Company

Stay On Top Of Everything MarkLogic

Be the first to know! News, product information, and events delivered straight to your inbox.

Sign Me Up

Extending Search API

There's much more to the Search API, and you can extend it yourself by writing custom constraints. Custom constraints are useful if you want full control over how a term without a constraint prefix should be handled, want to provide relevance weightings to different constraints, want a constraint to look in multiple places for a match, or want features like implicit phrase boosting. Let's look at how we'd control a term without a constraint prefix.

By default, terms entered into search:search() simply search all text nodes of a document. If we want to control that behavior we can plug in a little code. The following options node says for regular terms to call out to our own search-options.xqy library module to control the behavior. In it we specify exactly where we want to look (i.e. not inside header values) and with what relevance weightings.

The search-options.xqy library is fairly complex, but it's a lot of boilerplate. The so:myterm() function extracts the simple token and converts it to a complex cts:or-query. It makes sure to use the options passed in on the options node for things like case sensitivity. The important part of this is the cts:or-query definition that dictates where to look for matches and with what relevance weightings.

I've installed the library for you. You can't modify it, but you can tweak the search:search() call.

The Search API

Conclusion

Stack Overflow iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.

Comments

The commenting feature on this page is enabled by a third party. Comments posted to this page are publicly visible.