ホームページ  >  記事  >  バックエンド開発  >  検索エンジンが説明キーワードに対して行うように、一致する文字列を見つける方法

検索エンジンが説明キーワードに対して行うように、一致する文字列を見つける方法

WBOY
WBOYオリジナル
2016-06-13 13:26:53803ブラウズ

検索エンジンが説明キーワードに対して行うように、一致する文字列を見つけるにはどうすればよいですか?
次のように: 以下の 180 文字の中で「ドイツ」と「ボール」が最も頻繁に出現する位置セグメントを照合するにはどうすればよいですか?

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->$varchar='德国和丹麦都在第一场比赛1-0获胜,在次轮比赛中,德国2-1击败荷兰,两场小组赛战罢,德国队虽然拿到了6分,但依然未能保证出线,最后一场如果输给丹麦仍然有出局可能。丹麦上一场在0-2落后的情况下连追两球,但最后还是2-3输给葡萄牙,将小组次席拱手让给葡萄牙。

丹麦想要出线必须力争击败德国,好在他们也不缺乏击败德国的感觉。在两队最近3场交手中,丹麦令人吃惊地2胜1平占据上风,最近一次交手是在2010年8月,丹麦在落后两球情况下扳平比分。两队上一次在欧洲杯交手则是1992年欧洲杯决赛,当时正是丹麦童话的巅峰,北欧人2-0击败德国夺冠。

在德国队前两场比赛中,戈麦斯成为最大的亮点。超级马里奥连续两场比赛包揽了德国3粒进球,恐怖的是他进3球居然只花了6脚射门。戈麦斯目前以3球排名射手榜首位,自从1976年欧洲杯穆勒单届射进4球以来,德国队此后36年还没有任何球员欧洲杯单届进球超过3个。左边锋波多尔斯基在此前两场小组赛均打满全场,国家队出场次数达到99场,本场有望实现百场。

双方都没有对首发阵容进行大的调整,德国队只是因为博阿滕停赛而派上了本德,丹麦也只换上鲍尔森,队内元老罗梅达尔因伤缺席。本场德国前锋波多尔斯基迎来国家队第100场比赛,小将本德则是首次在国家队首发。

第2分钟,赫迪拉禁区前沿左侧传中,中路无人拿到皮球,后点穆勒胸部停球后左脚抽射稍稍高出。第5分钟,丹麦左侧角球,本特纳远点头球攻门被诺伊尔拿到。1分钟后,德国迅速反击,厄齐尔左侧直塞,波多尔斯基传中,克亚尔解围不力,穆勒门前3米处射门被安德森神奇化解。第12分钟,戈麦斯禁区外围左脚远射高出。';


-----解決策---------------- - ---
キーワードを決定した後、substr_count($string, $key); セグメントに蓄積し、最大のセグメントを保存します

------解決策---------
わかりました、わかりません

セグメンテーションとは、各段落を個別に計算できることを意味すると思いました。
------解決策---------
少なくとも説明の長さを制限します。これは次のとおりです。 「プログラミングの美しさ」の最短の要約問題、または同様の変換要件。

まず、文字列内ですべての Germany と ball が出現する場所を見つけます。次に、左右のポインターが頭を指すように準備し、[left, right] に両方のキーワードが含まれるまで右に移動し、その後、左に移動し始めます。右に進み、いずれかのキーワードの数が 0 になるまで停止し、右に進み続けます。方法は同じです。
------解決策---------
セグメントがどのように定義されているかわかりません。
あなたが指定したサンプルデータには 5 つの自然セグメントがありますが、これを標準として使用する必要がありますか?
それとも自然セグメントを無視して 180 文字ごとにセグメントを作成する必要がありますか?
または開始点をスライドすることができます

------解決策------------------
最初のステップ
PHP コード
$ar = preg_split('/(ドイツ|ボール)/', $varchar, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE);
print_r($ar); <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。