4349
とP 43
という2つの文書があります。検索用語に区切り文字が含まれている場合に検索結果をランク付けする一般的な方法は何ですか
マイインデックスDEFが
@AnalyzerDefs({
@AnalyzerDef(
name = "ngram",
charFilters = {
@CharFilterDef(factory = HTMLStripCharFilterFactory.class)
},
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = StandardFilterFactory.class),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = StopFilterFactory.class, params = {
@Parameter(name = "words", value = "/org/apache/lucene/analysis/snowball/english_stop.txt")}),
@TokenFilterDef(factory = EdgeNGramFilterFactory.class, params = {
@Parameter(name = "maxGramSize", value = "1"),
@Parameter(name = "maxGramSize", value = "15")
})
}
),
以下のように私の検索DEFはなく、同じです
4349
P 43
ために、両方のP 43
リターンの検索文字列ngramfilterと私は長さをオフにしました。
Q:第2位をより高いマッチとして返す方法、または返されたリストがうまくランク付けされていますか?
Q:入力クエリでトークン順をどのように取るか、すでに行われているかどうかを調べるもう1つの方法はありますか?
私はquerybuilder.phrase().withSlop(10)...sentence('P 43')
を使用することができましたが、今ではもう、最初の結果を返すだけであなたのアナライザ定義は、あなたの条件を破る方法を理解する必要が秒1
リトルノート:あなたは間違いかもしれない 'maxGramSize'を定義しましたか?私はhttps://hibernate.atlassian.net/browse/HSEARCH-2606を開き、そのフィードバックを改善しました。 – Sanne