Java 有人能详细解释SOLR请求处理程序和响应编写器吗?
首先,SolrWiki的许多部分对于刚学会如何索引和搜索字段的人来说不是很有用。看来是专为专家写的!它使用与solr相关的术语,因此如果不反复阅读,就很难理解它 注意:我有一个分类广告网站,其中最新的广告总是首先出现,因此排序与我无关,除了按价格和日期排序之外,没有其他选项可供用户选择,以及每页有多少结果 我知道,Java 有人能详细解释SOLR请求处理程序和响应编写器吗?,java,php,sql,mysql,database,Java,Php,Sql,Mysql,Database,首先,SolrWiki的许多部分对于刚学会如何索引和搜索字段的人来说不是很有用。看来是专为专家写的!它使用与solr相关的术语,因此如果不反复阅读,就很难理解它 注意:我有一个分类广告网站,其中最新的广告总是首先出现,因此排序与我无关,除了按价格和日期排序之外,没有其他选项可供用户选择,以及每页有多少结果 我知道,requestHandler是一种“对查询做一些事情”的方法,对吗? 但如何知道使用哪个处理器对我来说很难。以及如何配置一个。 我只知道处理程序是在查询字符串中指定的,如“qt=my_
requestHandler
是一种“对查询做一些事情”的方法,对吗?
但如何知道使用哪个处理器对我来说很难。以及如何配置一个。
我只知道处理程序是在查询字符串中指定的,如“qt=my_handler
”
同样,同样的问题也适用于响应编写者
,使用哪一个?如何配置
关于这些处理程序,我还应该知道什么
如何有效地使用它们
在我了解了所有这些之后,我真的应该写一些关于将solr实现到PHP网站中的东西
谢谢你的帮助 在Solr中,RequestHandler本质上是一个插件(逻辑模块),它以特定的方式处理传入的请求 请求处理程序可以提供查询以外的功能,比如数据导入,而不是对实际的搜索查询“做”一些事情 通常,Solr中的请求处理程序配置为特定端点(即URL),而不是通过qt参数选择。但是,特定于搜索的处理程序可以使用query type参数以特定的方式处理查询(即,一个处理程序可以处理各种查询类型) 使用什么处理程序,通常取决于您想要实现什么。我建议您查看提供的处理程序列表,并将它们的描述(许多都有Wiki页面)与您想要做的事情相匹配 对于查询,除了默认的SearchHandler之外,最常用的请求处理程序是DisaxRequestHandler(qt=dismax),它基本上会根据字段重要性使用不同的权重跨多个字段进行搜索。这通常被人们称为“谷歌式”搜索 此外,您可能会对MoreLikeThishHandler感兴趣,它旨在提供类似于特定文档的点击率(例如,以前的搜索结果) 请注意,新版本的Solr中的DisMaxRequestHandler实际上是由默认的SearchHandler提供的,查询类型为dismax,这是一个混乱的来源 处理程序在solrconfig.xml中配置: phps响应可以通过PHP的序列化机制读取:
$serializedResult = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=phps');
$result = unserialize($serializedResult);
print_r($result);
还有对其他软件(如Ruby、Python、Java Binary等)的支持,这些软件的构建本质上是为了让开发人员更容易使用比解析XML或JSON更快的机制将SOLR集成到他们的web应用程序中
但是,也有其他类型的ResponseWriter根据模板(例如Velocity)或转换(例如XSLT)实际转换响应。这在某些情况下非常有用,因为您不想依赖另一个应用程序来处理查询结果(例如,将XSLT直接转换为XHTML)
响应编写器也在solrconfig.xml中配置,通常您会启用感兴趣的编写器,例如:
<queryResponseWriter name="xml" class="org.apache.solr.request.XMLResponseWriter" default="true"/>
<queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/>
<queryResponseWriter name="php" class="org.apache.solr.request.PHPResponseWriter"/>
<queryResponseWriter name="phps" class="org.apache.solr.request.PHPSerializedResponseWriter"/>
使用它们的最有效方式取决于您的环境和您想要实现的目标。显然,如果您使用的是PHP,phps可能会提供更好的(通过该语言轻松访问)和更快的(内置序列化机制,不太冗长)结果。如果使用Javascript,json可能只是一种方式,等等
你看,SOLR是一个功能强大、用途广泛的平台:)
如果你想在丛林中找到一条路,你可能会想读一些书,比如(尽管我不确定它是否真的是最好的介绍)。通过反复试验、耐心和一些在线帮助,你可以最好地解决很多问题
希望这有助于您的行动。回答得很好。您能否解释一下
defType
和echoParams
?@cuh:请再提出一个问题。
$serializedResult = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=phps');
$result = unserialize($serializedResult);
print_r($result);
<queryResponseWriter name="xml" class="org.apache.solr.request.XMLResponseWriter" default="true"/>
<queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/>
<queryResponseWriter name="php" class="org.apache.solr.request.PHPResponseWriter"/>
<queryResponseWriter name="phps" class="org.apache.solr.request.PHPSerializedResponseWriter"/>