Solr
Solr
Solr
Solr
的分析过程
您可以在对应用程序内容索引之前运行 Solr 的分析过程来修改这些内容。在 Solr 和
Lucene 中, Analyzer 包括一个 Tokenizer 和一个或多个 TokenFilter 。 Tokenizer 负责 生成
Token , 后者在多数情况下对应要索引的词。 TokenFilter 从 Tokenizer 接受 Token 并且可 以
在索引之前修改或删除 Token 。 例如, Solr 的 WhitespaceTokenizer 根据空白断词,而它
的 StopFilter 从搜索结果中删除公共词。 其 他类型的分析包括词干提取、 同义词扩展和大 小
写折叠。如果应用程序要求以某种特殊方式进行分析,则 Solr 所拥有的一个或多个断词 工
具和筛选器可以满足您的要求。
您还可以在搜索操作期间对查询应用分析。 一个总体规则是: 应该对查询和要索引的 文
档运行相同的分析。 不熟悉这些概念的用户常犯的一个错误就是: 对文档标记进行词干提
取,
但不对查询标记进行词干提取,通常导致零搜索匹配。 Solr 的 XML 配置使它可以轻易地
使用简单声明创建 Analyzer ,本文稍后会对此作出展示。
有关 Solr 和 Lucene 的分析工具, 以及索引结构和其他功能的更多信息, 请参阅 参 考
资料。
示例应用程序
以下各节将使用实际的示例应用程序向您介绍 Solr 的功能。该示例应用程序是一个 基
于 Web 的博客界面, 您可以使用它来记录条目、 给条目指派元数据, 然后索引和搜索条
目。
在索引和搜索过程的每一步,您都可以选择显示发送到 Solr 的命令。
要查看示例应用程序,请将浏览器指向 http://localhost:8080/dw/index.jsp 。如果一切设
置正确 (如 “ 设置 Solr
”
描述的那样) , 则您可以看到一个题为 “ Sample Solr Blog Sear ch
”
的简单用户界面, 在标题的正下方有一些菜单项。 当您浏览本文的两个部分时, 将会了解 到
菜单中的所有主题。
索引操作
在 Solr 中,通过向部署在 servlet 容器中的 Solr Web 应用程序发送 HTTP 请求来启
动索引和搜索。 Solr 接受请求,确定要使用的适当 SolrRequestHandler ,然后处理请求。 通
过 HTTP 以同样的方式返回响应。默认配置返回 Solr 的标准 XML 响应。您也可以配置
Solr 的备用响应格式。我将在本文的第 2 部分向您展示如何定制请求和响应处理。
索引就是接受输入(本例中是博客条目、关键字和其他元数据)并将它们传递给 Solr
,
从而在 HTTP Post XML 消息中进行索引的过程。您可以向 Solr 索引 servlet 传递四个不
同的索引请求:
add/update
add/update
add/update
add/update
: 允许您向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添加和
更新。
Commit
Commit
Commit
Commit
: 告诉 Solr ,应该使上次提交以来所做的所有更改都可以搜索到。
Optimize
Optimize
Optimize
Optimize
:
重构 Lucene 的文件以改进搜索性能。 索引完成后执行一下优化通常比较
好。
如果更新比较频繁, 则应该在使用率较低的时候安排优化。 一个索引无需优化也可以正常 地