1 17 package org.alfresco.repo.search.impl.lucene.query; 18 19 import java.io.IOException ; 20 21 26 public class RelativeStructuredFieldPosition extends AbstractStructuredFieldPosition 27 { 28 29 int relativePosition; 30 31 34 public RelativeStructuredFieldPosition(String termText) 35 { 36 super(termText.equals("*") ? null : termText, true, false); 37 relativePosition = 1; 38 39 } 40 41 public RelativeStructuredFieldPosition() 42 { 43 super(null, false, false); 44 relativePosition = 1; 45 } 46 47 53 public int matches(int start, int end, int offset) throws IOException 54 { 55 56 if (getCachingTermPositions() != null) 57 { 58 getCachingTermPositions().reset(); 60 int count = getCachingTermPositions().freq(); 61 int requiredPosition = offset + relativePosition; 62 int realPosition = 0; 63 int adjustedPosition = 0; 64 for (int i = 0; i < count; i++) 65 { 66 realPosition = getCachingTermPositions().nextPosition(); 67 adjustedPosition = realPosition - start; 68 if ((end != -1) && (realPosition > end)) 69 { 70 return -1; 71 } 72 if (adjustedPosition == requiredPosition) 73 { 74 return adjustedPosition; 75 } 76 if (adjustedPosition > requiredPosition) 77 { 78 return -1; 79 } 80 } 81 } 82 else 83 { 84 return offset + 1; 86 } 87 return -1; 88 } 89 90 public String getDescription() 91 { 92 return "Relative Named child"; 93 } 94 } 95 | Popular Tags |