Marklogic search development -2.1 Understanding the Search API
2013-08-25 13:28
337 查看
2.1 Understanding the Search API
Search API是一套基于searchparsing; search grammer;search snipet; search facet; search term completion以及其他一些功能的组合。2.1.1 XQuery Library Module
import module namespace search = http://marklogic.com/appservices/search at"/MarkLogic/appservices/search/search.xqy";
SearchAPI是以xquerymodule的方式出现的。你可以使用上面的prolog方式引入search API module。
Snippet: search:snippet,
Query-completion: search:suggest
Query-suggestion,
2.1.2 Simple search:search Example and Response Output
Search:search 其中会做诸如search parsing, search termcompletion, search grammer等针对searchquery string的分析工作转成cts:query。并在searchresponse中体现snippet,URI,pagenation等信息。
非常方便易用。你可以基于searchresponse制作绝大多数基于search结果的applicationUI页面了。
2.1.3 Automatic Query Text Parsing and Grammar
Search API会自动地将用户的Query string解析成search term,用以调用cts:query。这个过程中使用到了search
gammer,term completion, stem,collection,facet等等等等。
• XQuery: The search:search and search:parse functions
• Java: The com.marklogic.client.query.QueryManager class
•REST: The /search service
你可以直接使用RESTservice,Java API来调用searchAPI。
2.1.4 Constrained Searches and Faceted Navigation
Constrained search实际上就是更近一步对你的search条件进行限制。例如:decade:2000s表示对decade年度进行查询,查询的条件是2000s年。
而Factetdsearch是highlight出你的constrained search后结果集中的count。
当你点击2000s(240)的时候,你将发起一个constrainedsearch: decade:2000s
每个search response中都还用facet信息,从而你可以根据facet信息构建如上图的UI。
<search:responsetotal="2370" start="1" page-length="10"xmlns=""
xmlns:search="http://marklogic.com/appservices/search">
<search:facetname="decade">
<search:facet-valuename="2000s" count="240">
2000s</search:facet-value>
<search:facet-valuename="1990s" count="300">
1990s</search:facet-value>
<search:facet-valuename="1980s" count="300">
。。。
</search:facet>
</search:response>
(前提,你要获取如上facet信息,你需要预先定义rangeindex, lexicon API等等)
2.1.5 Built-In Snippetting
Search response对象还提供Snippet的信息,在其中你可以获得诸如highlighsearch term,
Query string, snippet of original documnent等等信息。极大的方便了searchapplication UI的建设。
当然,你可以在response对象中自定义这样的snippet输入格式。
2.1.6 Search Term Completion
这个功能非常好,当用户在query textbox输入查询单词时,同时marklogic可以在dragdown list中给到建议的查询条件。在marklogic中search:suggestion是用来支持这个feature的。
2.1.7 Search Customization Via Options and Extensions
你可以使用apply来使用自定义的funcation来处理searchresoult
<transform-resultsapply="my-snippet"ns="my-namespace"
at="/my-module.xqy" />
表示是用my-snippet这个func,该func位于目标app server 的my-module.xqy中。
如你所见,使用apply可以使用自定义的custoimzer func来处理你的search。 我们知道,search option有很多,有基于term的有基于gammer的,他们都有“apply”这个属性,你可以使用它来扩展你的search以及
a2c6
search response。这个就是大名鼎鼎的function value模式。
TheSearch API uses function values to pass your custom function as
a parameter,replacing the default Search API functionality. For details on function values,see
Function Values in theApplication Developer’s Guide。
2.1.8 Speed and Accuracy
查询速度与查询结果的精确度之间是相互有取舍的。通常你需要在它们两个之间根据特定的场景或需求进行取舍性决定。 如:searchAPI中的filter与unfilter,diactritic 与case-sensitivity 这些option就是分别针对速度或者偏重精度的。甚至有些option在精度上还会出现负面的错误情况,如unfilter。
lexiconAPI 是基于rangeindex的resolution的,而并不是基于search value的。因为你的index的分辨率并不能保证对你的查询的精确度的保证。因此这个东东的查询结果也不能保证100%的精度要求。
Fragmentationoption也可以用来调整indexresolution的精确度。另外world position 以及element world position的enable也可以降低这种false-positive的情形。
相关文章推荐
- Marklogic search development
- JAXB 2.1 API is being loaded from the bootstrap classloader各种解决方案
- JAXB 2.1 API is being loaded from the bootstrap……(cxf与java的包冲突)
- Applying Enterprise JavaBeans 2.1: Component-Based Development for the J2EE Platform (2nd Edition)
- The General Procedure Of Setting Up EDKII Development Environment:搭建EDKII开发环境的通用流程[2.1]
- mark down the problem occured in wp development
- Understanding the Search Service Architecture
- .NET Framework Solutions: In Search of the Lost Win32 API
- The Game API package provides a series of classes that enable the development of rich gaming content for wireless devices.
- java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI(xxx) needs 2.1 API
- The Search API
- Understanding the JMF RTP API
- Elasticsearch Java API (i)
- The Semantic Search Engine
- [React] Use the new React Context API
- Universal Windows App Development with Cortana and the Speech SDK 3
- Understanding the JVM(二)虚拟机对象的创建
- Ceilometer - Install the API behind mod_wsgi
- Note of big data dummies:Understanding the role of relational databases in big data
- The Highest Mark hdu 5501 贪心+背包