0

クロールされた内部サイトから結果が返されます。問題は、コードでロケーションハッシュを使用しているために、複数の結果が得られることです。

http://site.com/en/personal/refunds.html
http://site.com/en/personal/refunds.html#
http://site.com/en/personal/refunds.html#content
http://site.com/en/personal/refunds.html#section1

それらはすべて関連性があるかもしれませんが、それらが私の上位4つの結果である場合は見栄えがよくありません。それらを1つの結果として見ることができる方法はありますか?

ほとんどのページで#と#contentが発生しているように見えるので、これらを除外するためのルールを適用できます。これらは、コンテンツにスキップするために使用され、アクセシビリティスタイルシートを切り替えるために使用されます。

4

3 に答える 3

1

#を含むパターンで終わるURLをフィルタリングできます。regex-urlfilter.txtで、含めるまたは除外するパターンを指定できます

これにより、ルートページのみがインデックスに登録され、#が付いているページはインデックスから除外されます。

于 2013-02-06T04:15:40.517 に答える
1

最初のオプションであり、最良のオプションは、この種のページをクロールしないことです。@Jayendraが述べたように、正規表現urlfilterを使用する

もう1つのオプションは、更新チェーン機能を使用してインデックス付きドキュメント値を変更することです。インターフェイスUpdateRequestProcessorを実装し、Javaコードを使用して自分で解析し、URLを変更して#anchor要素を削除します。

そして、私が念頭に置いている最後のオプションは、次のようにURLフィールドでPatternReplaceCharFilterFactoryを使用することです。

<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(#.*)" replacement=""/>

最初のソリューションを使用すると、「場所」ごとに1ページだけインデックスを作成します。他のページを使用すると、すべてのページにインデックスが付けられますが、Solrがこのドキュメントの以前のバージョンを削除するため、実際にインデックスが付けられるのは最後のページだけです。

于 2013-02-08T23:00:48.143 に答える
0

OK、これは機能しました。regex-normalize.xmlファイルを編集して、#が含まれるURLを無視するように指示しました。

<regex>
  <pattern>#.*</pattern>
  <substitution>$1</substitution>
</regex>

このファイルを使用するには、 nutch-site.xmlのplugin.includesプロパティに「urlfilter-regex」を追加する必要がありました。

于 2013-02-12T11:42:34.430 に答える