0

ルセン ブースティングに問題があります。指定された (firstname) フィールドと一致する特定のドキュメントをブーストしようとしています。コードの一部を投稿しました。

private static Document createDoc(String lucDescription,String primaryk,String specialString){
  Document doc = new Document();
  doc.add(new Field("lucDescription",lucDescription, Field.Store.NO, Field.Index.TOKENIZED));
  doc.add(new Field("primarykey",primaryk,Field.Store.YES,Field.Index.NO));
  doc.add(new Field("specialDescription",specialString, Field.Store.NO, Field.Index.UN_TOKENIZED));
  doc.setBoost ((float)(0.00001));
  if (specialString.equals("chris"))
  doc.setBoost ((float)(100000.1));
  return doc;
}

なぜこれが機能しないのですか?

public static String dbSearch(String searchString){
  List<String> pkList = new ArrayList<String>();
  String conCat="(";
  try{
   String querystr = searchString;

   Query query = new QueryParser("lucDescription", new StandardAnalyzer()).parse(querystr);  
   IndexSearcher searchIndex = new IndexSearcher("/home/athreya/docsIndexFile");
   // Index of the User table--> /home/araghu/aditya/indexFile.
   Hits hits = searchIndex.search(query);
   System.out.println("Found " + hits.length() + " hits.");
   for(int iterator=0;iterator<hits.length();iterator++) {
    String primKey=hits.doc(iterator).get("primarykey");
    System.out.println(primKey);
    pkList.add(primKey);
   }
   searchIndex.close();

よろしくお願いします

4

1 に答える 1

1

コードを見ただけでは何が問題なのかを判断するのは難しいですが、いくつか試してみてください。

  1. Luke でインデックスを開き、ドキュメント (「chris」を含む) のスコアを確認します。
  2. いずれかの setboost 呼び出しをバイパスしているかどうかは不明です。

    if (specialString.equals("chris")) doc.setBoost ((float)(100000.1)); そうでなければ doc.setBoost ((float)(0.00001));

于 2010-05-05T15:22:04.543 に答える