在手工艺者内容管理系统中匹配突出显示搜索


在搜索结果中突出显示搜索词是许多网站的共同要求。Crafter CMS建立在Apache Solr之上,使得实现丰富的搜索和其他查询驱动的体验变得非常简单。

步骤0:先决条件

如果你还没有建立起你的第一个网站,你可以按照这个教程开始:Working with Your First Crafter CMS Web site.

步骤1:为文章构建内容模型

我们需要的下一件事是提出质疑的内容。支持内容创建的第一步是定义内容类型。内容类型是特定类型内容的结构定义。在我们的例子中,我们想定义一篇文章的结构。

一篇简单的文章应该有:

  • 一个网址
  • 标题
  • 作者姓名
  • 一具尸体

为了定义这一点,我们使用工匠的内容类型管理控制台。下面您可以看到包含字段及其类型的示例模型。

您可以在这里了解更多关于内容建模的信息Content Modeling in Crafter CMS.

步骤2:创建内容

既然已经定义了文章内容类型,就可以创建文章了。要创建一篇文章,请打开侧栏中的“页面”文件夹(我们将文章建模为带有网址的页面),然后右键单击主页:

步骤3:创建一个REST脚本来返回突出显示的结果

现在你有了内容,你可以写一个RESTful控制器并测试它。让我们创建一个简单的基于GET的REST控制器。

  1. 打开侧栏,找到脚本文件夹。
  2. 打开脚本文件夹,导航到“休息”文件夹。
  3. 右击它并选择“创建控制器”
  4. 在脚本名称对话框中,输入“搜索.获取”,然后单击创建。
  5. 输入以下代码:
// build a query
def keyword = params.q 
def queryStatement = "content-type:\"/page/article\" " 
 
 if(keyword) {
      queryStatement += " AND $keyword"
 }
 
 def query = searchService.createQuery()
 query.setQuery(queryStatement)
 query.addParam("hl", "true")
 query.addParam("hl.fl", "body_html")
 query.addParam("hl.simple.pre", "<b>")
 query.addParam("hl.simple.post", "</b>")
 
 // execute the query
 def executedQuery = searchService.search(query)

def matches = [:]
matches.found = executedQuery.response.numFound
matches.articles = executedQuery.response.documents
matches.highlights = executedQuery.highlighting

return matches

步骤4:执行脚本

在浏览器中,转到http://SERVER:PORT/API/search . JSON?q = AWORDATATEXISSINESS results

示例:http://localhost:8080/API/search . JSON?q =培根