KQL是Keyword Query Language(关键字查询语言的缩写),在SharePoint 2013 Search 中可以使用KQL来查询(最长2048个字符):
1. KQL可以直接在界面上使用,如在SharePoint的Search Box中输入KQL 表达式,可以直接搜索出KQL 表达式所匹配的内容。
下图中 OrderNoOWSTEXT:000*就是一个 KQL表达式,表示查询Managed PropertyOrderNoOWSTEXT以000开头的记录:
2. 你也可以使用客户端模型(Client Object Model)来使用KQL, http://blog.csdn.net/farawayplace613/article/details/8444625
更具体的关于KQL的介绍可以参考:http://msdn.microsoft.com/en-us/library/ee558911.aspx,但是缺少怎么用的 实例。
这里我举些具体的KQL表达式的例子,并解释它们的意思(这里记录指所有SharePoint中的对象,page, item,document, folder ......):
a. 0001 匹配所有全文中含有0001的记录
b. OrderNoOWSTEXT:0001 匹配所有Managed PropertyOrderNoOWSTEXT的值为0001的记录
c. OrderNoOWSTEXT:000* 匹配所有Managed PropertyOrderNoOWSTEXT的值以000开头的记录
d. author:"Abraham Cheng" ANDfiletype:docx 匹配所有作者是Abraham Cheng的文件类型为docx的记录
e. Created>2012-12-16 匹配创建日期大于(晚于)2012-12-16的记录
f."cheng tr" VS cheng tr, 前一个匹配含有“cheng tr”(中间没有其他内容)的记录, 后者匹配既 包含cheng也包含tr的记录
g. OrderNoOWSTEXT:000* VS OrderNoOWSTEXT=000* , 前一个匹配所有Managed PropertyOrderNoOWSTEXT的值以000开头的记录,后一个匹配所有Managed PropertyOrderNoOWSTEXT的值为000*的记录
h. Created:2012-12-16..2012-12-28 匹配创建日期在2012-12-16 到 2012-12-28之间的记录
i. OrderNoOWSTEXT:0001 OR OrderNoOWSTEXT:0002 匹配所有Managed PropertyOrderNoOWSTEXT的值为0001 或 0002 的记录
j. OrderNoOWSTEXT:000* ANDOrderNoOWSTEXT:0002 匹配所有Managed PropertyOrderNoOWSTEXT的值以000开头且该值为0002的记录
k. OrderNoOWSTEXT:000* AND OrderNoOWSTEXT<>0001 匹配所有Managed PropertyOrderNoOWSTEXT的值以000开头且该值不为0001的记录
l. OrderNoOWSTEXT:000* NOTOrderNoOWSTEXT=0001 匹配所有Managed PropertyOrderNoOWSTEXT的值以000开头且该值不为0001的记录
m. +author:"Abraham Cheng" 匹配作者为Abraham Cheng的所有记录
author:"John Smith" <==> +author:"John Smith"
n.-author:"AbrahamCheng" 匹配作者不是"Abraham Cheng"的记录
-author:"AbrahamCheng" <==> NOT author:"AbrahamCheng"
o. 使用多个属性来搜索时,当属性相同且没有AND, OR等逻辑操作时,默认是OR, 当属性不相同且没有AND, OR等逻辑操作时,默认为AND
author:"JohnSmith" author:"Jane Smith" <==>author:"John Smith" OR author:"Jane Smith"
author:"JohnSmith" filetype:docx <==> author:"John Smith" AND filetype:docx
p. "Abraham"NEAR "Cheng" VS "Cheng"NEAR "Abraham", 前者和后者意思一致,匹配 Abraham 和 Cheng在相互的附近的记录
q. "Cheng"ONEAR "Abraham" VS "Abraham"ONEAR "Cheng" 前者匹配Cheng 后面的附近跟着Abraham的记录, 后者匹配Abraham 后面的附近跟着Cheng记录
r: WORDS(Abraham, Cheng) 匹配括弧内任意字符串的记录
Note: NEAR, ONEAR,WORDS only forfull text search, can't specified properties(NEAR, ONEAR,WORDS 只适用于全文搜索,不可以指定Managed Property)
s: (cat OR dog) XRANK(cb=100) thoroughbred (这个比较复杂,我也没太搞明白,先放着,以后弄懂了再更新)
<match expression> XRANK(cb=100, rb=0.4, pb=0.4, avgb=0.4,stdb=0.4, nb=0.4, n=200) <rank expression>