4

CMS の検索機能を構築しています。基本的には、データベースで特定のテキストを検索する cfquery を作成するだけです。結果をブラウザーに表示すると、結果の一部として、検索されたテキストとそれを囲む 1 つまたは 2 つの文を含むテキストのセクションが表示されることを望んでいました。したがって、何とか何とか何とか #FORM.searchedstring# 何とか何とか何とかのようなものになります。文字列の特定の部分のみを表示する方法についてのアイデアはありますか?

ありがとう

これは私が書いたものです

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

本文には、すべてのエントリを返す cfloop クエリがあります。真ん中に #FORM.searchstring# がある MYSTORIES.TEXT の文字列の特定の部分も返したいだけです。

4

2 に答える 2

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)#">

これがまさにあなたが求めているものかどうかはわかりませんが

于 2013-02-05T22:25:23.287 に答える
1

より正確な検索結果が得られる可能性がある別のオプションは、CFINDEX を使用してデータを検索コレクション (実行している CF のバージョンに応じて Solr または Verity) に入れ、次に 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

于 2013-02-06T18:20:53.073 に答える