2017-06-27 23 views
0

私の要件は、ユーザーがLucene検索を使用して「ページ番号」を検索した場合、結果のページ番号を正確なページ番号の上に一致するように処理する必要があります。リスト。Lucene検索サービスで「ページ番号」を取得する方法

は今、私の場合は私がするSortFieldを使用して並べ替えしようとした -

new Sort(new SortField("bookPageNumber", SortField.STRING)); 

私は用語を検索するとし「5」、検索結果での代わりに、それは示して、リストの一番上に正確なページ数の一致を示すの用語を検索各ページに存在する「5」。

誰でもLuceneにページ番号を含める方法を提案できます。リストの先頭に検索結果があります。

私のコード -

QueryParser qParser; 
qParser = new QueryParser("contents", new StandardAnalyzer(Version.LUCENE_CURRENT)); 
qParser.setDefaultOperator(QueryParser.Operator.AND); 
String searchResultMaxCount = "10"; 
int maxCount = Integer.parseInt(searchResultMaxCount); 
Query query = qParser.parse("5"); 
Sort sort = new Sort(new SortField("bookPageNumber", SortField.STRING)); 
TopDocs topDocs = indexSearcher.search(query, null, maxCount, sort); 
+0

どのようにあなたのドキュメントのインデックスを作成していますか?各ページは別の文書ですか? – femtoRgon

+0

いいえ、1つの文書として索引付けされています。 – Jatin

+0

これに関するアップデートはありますか? – dom

答えて

0

私は、これはブーストを持つフィールドのスコアリングを変更するには良い例だと思います。ブーストを使用すると、検索結果のスコアを操作することができます。 あなたの場合:あなたのbookPageNumberFieldにブーストを追加してください。

2つの方法でこれを行うことができます。 インデックス付け中に追加を追加するか、クエリを使用して検索中に追加します。ここ

詳細情報: http://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/package-summary.html#scoringBasics

関連する問題