1

Oracle で次のテキスト検索クエリを実行すると:

SELECT SCORE(1), text_search
FROM search  
WHERE contains(text_search, 'fuzzy(citi, 70, 100, WEIGHT) within Name', 1) > 0 
ORDER BY SCORE(1) DESC

最高スコア 100 の返されたレコードは、'citi' に類似した単語を複数含むレコードです:
City of Kansas City - スコア 100

しかし、完全一致を含むレコードのスコアは 76 しかありません:
Citi Group - スコア 76

類似語を 1 つだけ含むレコードのスコアは 53アビリーン
市- スコア 53

完全一致のレコードが最高のスコアを持つべきではありませんか? それを達成する方法はありますか?

80に増やすsimilarity_scoreと、'city' を含むレコードは返されなくなります。ただし、それにより、他の検索で返されるレコードの数が減ります。

2に減らすnumtermsと、'city' を含むレコードは返されなくなります (明らかに、Oracle は 'city' を 'citi' の 2 番目に類似した単語と見なしていません)。ただし、これにより、他の検索で返されるレコードの数が再び減少します。

4

1 に答える 1

1

Oracle Text は、データベース内の膨大な製品です (ドキュメントで 2 冊の本を獲得しています)。テキストには、すぐに使用できる動作を変更するために使用できる多くのノブとレバーがあります。何を達成しようとしているのかを確認するのは難しいですが、クエリ テンプレートを試してみる必要があると思います。そのメカニズムにより、ユーザー定義のスコアリング アルゴリズムを作成できるからです。 詳細をご覧ください

于 2014-12-29T07:59:34.103 に答える