2

表示されている記事に応じて、いくつかのキーワード メタ タグをページにドロップしたいと考えています。

ページ blabla.com/article.aspx?id=2 をロードするとします。ID が 2 に等しい記事のタイトルは、「ビジネス管理における意図的な間違いの知恵」です。

したがって、次のようなメタ タグを含めたいと思います。

<META name="keywords" content="wisdom, deliberate, mistakes, business, management" />

そのため、ノイズの多い単語を除外する方法が必要です (SQL Server FullText と同様)。どのようにしますか?

1) ノイズ ワード リストを webconfig に保存しますか? 2) ノイズ ワードをデータベースに保存しますか? 3) ノイズ ワードをテキスト ファイルに保存しますか? 4) コード内のノイズ ワードをハードコーディングする (NOT =P)

では、これらのノイズ ワードをどのように読み込んで、ページの読み込みを最小限に抑えますか? 最後に、文字列を解析してノイズ ワードを削除するにはどうすればよいでしょうか。

ありがとう!

編集: ノイズ (またはストップ) ワードは、SQL Server 2005 FTS が使用するものと同じです (MSSQL\FTDATA の noiseENU.txt を確認してください)。そのファイルの内容は次のとおりです。

about
1
after
2
all
also
3
an
4
and
5
another
6
any
7
are
8
as
9
at
0
be
$
because
been
before
being
between
both
but
by
came
can
come
could
did
do
does
each
else
for
from
get
got
has
had
he
have
her
here
him
himself
his
how
if
in
into
is
it
its
just
like
make
many
me
might
more
most
much
must
my
never
no
now
of
on
only
or
other
our
out
over
re
said
same
see
should
since
so
some
still
such
take
than
that
the
their
them
then
there
these
they
this
those
through
to
too
under
up
use
very
want
was
way
we
well
were
what
when
where
which
while
who
will
with
would
you
your
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
4

5 に答える 5

1

「ノイズ」または「ストップ」の単語をフィルタリングしたい場合は、regluarの表現を調べることをお勧めします。これらの単語は、この種のものをすばやく処理します。実装に関しては、おそらくノイズ/ストップワードをテーブルに保存し、そのワードを使用して正規表現を作成します。サーバーに正規表現をキャッシュできるはずなので、パフォーマンスへの影響は最小限に抑えられます。

上記で提供した単語に基づく例を次に示します。http://regexpal.com/に優れたオンライン正規表現テスターがあります:

    \b(?:about|1|after|2|all|also|3|an|4|and|5|another|6|any|7|are|8
|as|9|at|0|be|$|because|been|before|being|between|both|but|by|came|can|come|
could|did|do|does|each|else|for|from|get|got|has|had|he|have|her|here|him|
himself|his|how|if|in|into|is|it|its|just|like|make|many|me|might|more|most|
much|must|my|never|no|now|of|on|only|or|other|our|out|over|re|said|same|see|
should|since|so|some|still|such|take|than|that|the|their|them|then|there|these|
they|this|those|through|to|too|under|up|use|very|want|was|way|we|well|
were|what|when|where|which|while|who|will|with|would|you|your)\b
于 2009-07-06T18:22:16.490 に答える
1

これらの種類の単語は「ストップワード」と呼ばれ、実装のアイデアをグーグルで検索するのに役立ちます。

私の感覚では、これを行うことにはあまり価値がありません。タイトルは、検索インデックス作成にとってすでに非常に重要であると考えられています。また、「知恵」は本当にその記事に関連する言葉ですか?

最高のキーワードは、タグのように人間が選んだものであり、実際にコンテンツを説明する特定の1〜3に抑えられていると思います。

しかし、あなたの質問に答えるために-あなたは彼らがいくつになると思いますか?これを行う場合は、データベースに保存し(すでにデータベースを使用している場合)、パフォーマンスに影響する場合は、メモリにプリロードします(すべてのセッションで共有できます)。

于 2009-07-06T18:22:51.107 に答える
0

@Robの答えは、同様のタスクの正しい方向を示してくれました。これが私が最終的に取り組んだ機能です。ファイルnoiseENU.txtは からそのままコピーされます\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData

    Public Function StripNoiseWords(ByVal s As String) As String
        Dim NoiseWords As String = ReadFile("/Standard/Core/Config/noiseENU.txt").Trim
        Dim NoiseWordsRegex As String = Regex.Replace(NoiseWords, "\s+", "|") ' about|after|all|also etc.
        NoiseWordsRegex = String.Format("\s?\b(?:{0})\b\s?", NoiseWordsRegex)
        Dim Result As String = Regex.Replace(s, NoiseWordsRegex, " ", RegexOptions.IgnoreCase) ' replace each noise word with a space
        Result = Regex.Replace(Result, "\s+", " ") ' eliminate any multiple spaces
        Return Result
    End Function
于 2010-01-22T22:06:57.217 に答える
0

ここに解決策があります

  1. 変数 $NOISE_WORDS を xs:string* として定義します
  2. {
  3. (: \b は単語境界です。これは先頭をキャッチし、
  4. end、および middle of string は、単語全体に一致します。:)
  5. ('\bthe\b', '\bof\b', '\ban\b', '\bor\b',
  6. '\bis\b', '\bon\b', '\bbut\b', '\ba\b')
  7. }
    1. 関数 remove-noise-words($string, $noise) を定義します
    2. {
    3. (: これは再帰関数です。:)
    4. if(not(empty($noise))) then
    5. 削除ノイズワード(
    6. replace($string, $noise[1], '', 'i'),
    7. (: これは後にノイズ ワードを渡します。
    8. 評価したばかりのもの。:)
    9. $noise[位置() > 1]
    10. )
    11. else 正規化スペース($string)
    12. }
      1. let $source-string1 := "リア王の悲劇"
    13. let $source-string2 := "リア王の悲劇"
    14. let $source-string3 :=
    15. 「リア王の悲劇」
    16. let $source-string4 := "のの"
    17. (: すべてのノイズ ワードの場合、空の結果を処理する必要があります。
    18. 上記の#4のように。:)
    19. $final を聞かせて :=
    20. remove-noise-words($source-string1, $NOISE_WORDS)
    21. $final を返す

[リンク テキスト][1] にアクセスしてください

[1]:詳細についてはhttp: //filesharepoint.com ..!

于 2010-06-21T06:30:16.437 に答える