繁体   English   中英

cfindex之后,ColdFusion 10 Solr cfsearch有时仅返回结果

[英]ColdFusion 10 Solr cfsearch after cfindex returning results only sometimes

这是我第一次使用cfsearch。 我将以下代码与ColdFusion 10一起在我的开发服务器上工作,并使用我先前创建的集合。

我可以获得此结果以返回一致结果的唯一方法是在cfindex和cfsearch之间放置一个“睡眠”。 否则,搜索将在90%的时间内不返回任何结果,有时还会返回部分或全部结果。 我的查询只有3条记录,并且已对集合进行了优化。

刷新集合非常重要,因为这是一个经常更改的业务目录。

<form action="search.cfm" method="get">
<input type="text" name="searchFor">
<input type="submit" value="Search">
</form>

<cfquery name="qryData" datasource="#session.DataSource#">
    SELECT biz_id, biz_name, biz_city, biz_state, biz_county
    FROM biz
   WHERE user_level > 0 AND user_level < 99
</cfquery>
<cfindex collection="mySearch" action="refresh" body="biz_name,biz_city,biz_state,biz_county" key="biz_id" query="qryData">

<cfset sleep(100)>

<cfsearch name="search" collection="mySearch" criteria="#url.searchFor#" maxrows="100">
<cfdump var="#search#">

Solr服务器将需要一些时间来提交对索引所做的更改。

通常,在同一个请求中执行<cfindex><cfsearch>是一个非常糟糕的主意,如果您对发出的每个搜索请求都这样做,则更是如此。

如果您需要经常更新索引,请创建一个定期运行的计划任务,并使其保持最新状态:

<cfquery name="qryData" datasource="#session.DataSource#">
    SELECT biz_id, biz_name, biz_city, biz_state, biz_county
    FROM biz
   WHERE user_level > 0 AND user_level < 99
</cfquery>

<cfindex 
   collection="mySearch" 
   action="refresh" 
   query="qryData"
   key="biz_id" 
   body="biz_name,biz_city,biz_state,biz_county" 
>

然后分别运行搜索。

<form action="search.cfm" method="get">
  <input type="text" name="searchFor">
  <input type="submit" value="Search">
</form>

<cfsearch name="search" collection="mySearch" criteria="#url.searchFor#" maxrows="100">
<cfdump var="#search#">

请注意,ColdFusion 10支持deltaimport操作该操作可能比执行完整刷新更有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM