ColdFusion仅从数据库返回字符串的一部分

时间:2013-02-05 21:31:38

标签: mysql database string coldfusion

我正在为我们的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#。

2 个答案:

答案 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