我正在为我们的CMS构建一个搜索功能,基本上只是创建一个在我们的数据库中查找给定文本的cfquery。当我向浏览器显示结果时,我希望在结果中显示一段文本,其中包含搜索到的文本以及围绕它的一两句话。所以它会像blah blah blah#FORM.searchedstring#blah blah blah。关于如何只显示字符串特定部分的任何想法?
由于
这就是我写的
<cfquery datasource="#MyDatasource#" name="getstory">
SELECT *
FROM Stories
WHERE MYSTORIES.TEXT
LIKE '%#FORM.searchstring#%'
OR MYSTORIES.PAGETITLE
LIKE '%#FORM.searchstring#%'
OR MYSTORIES.HEADLINE
LIKE '%#FORM.searchstring#%'
OR MYSTORIES.SUBTITLE
LIKE '%#FORM.searchstring#%'
ORDER BY MNLSECTIONID
</cfquery>
在body中是一个返回所有条目的cfloop查询。我只想在MYSTORIES.TEXT中返回一个特定部分的sting,其中间有#FORM.searchstring#。
答案 0 :(得分:4)
您可以使用FindNoCase()
功能查找#form.searchingstring#
像
这样的东西<cfset locationoftext = findnocase(form.searchstring,getstory.story)>
<cfdump var="#Mid(getstory.story,locationoftext-40,40)#"><Br>
<cfdump var="#Mid(getstory.story,locationoftext,40)#">
不确定这是否正是你所追求的
答案 1 :(得分:1)
另一个可能产生更准确搜索结果的选项是使用CFINDEX将您的数据放入搜索集合(Verr的Solr,取决于您运行的CF版本),然后使用CFSEARCH搜索集合。您可以设置索引以在数据中返回搜索词的实例,甚至可以轻松添加代码以突出显示所述实例。
http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7d04.html
http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7d02.htm