private static IndexableField[] getDocumentFields( Document document, String name ) { return document.getFields( name ); } }
private void removeAllValueFields() { Iterator<IndexableField> it = document.getFields().iterator(); while ( it.hasNext() ) { IndexableField field = it.next(); String fieldName = field.name(); if ( !fieldName.equals( NODE_ID_KEY ) ) { it.remove(); } } }
private void removeAllValueFields() { Iterator<IndexableField> it = document.getFields().iterator(); while ( it.hasNext() ) { IndexableField field = it.next(); String fieldName = field.name(); if ( !fieldName.equals( FIELD_ENTITY_ID ) ) { it.remove(); } } } }
static boolean documentIsEmpty( Document document ) { List<IndexableField> fields = document.getFields(); for ( IndexableField field : fields ) { if ( LuceneExplicitIndex.isValidKey( field.name() ) ) { return false; } } return true; }
private void clearDocument( Document document ) { Set<String> names = new HashSet<>(); for ( IndexableField field : document.getFields() ) { String name = field.name(); if ( LuceneExplicitIndex.isValidKey( name ) ) { names.add( name ); } } for ( String name : names ) { document.removeFields( name ); } }
private Collection<IndexableField> getNotIndexedStoredFields( Document document ) { Map<String,IndexableField> nameFieldMap = new HashMap<>(); List<String> indexedFields = new ArrayList<>(); for ( IndexableField field : document.getFields() ) { if ( isStoredField( field ) ) { nameFieldMap.put( field.name(), field ); } else if ( !DocValuesType.NONE.equals( field.fieldType().docValuesType() ) ) { indexedFields.add( field.name() ); } } indexedFields.forEach( nameFieldMap::remove ); return nameFieldMap.values(); }
private void removeFromCache( long entityId ) throws IOException { IndexSearcher searcher = searcherManager.acquire(); try { Query query = type.idTermQuery( entityId ); TopDocs docs = searcher.search( query, 1 ); if ( docs.totalHits > 0 ) { Document document = searcher.doc( docs.scoreDocs[0].doc ); for ( IndexableField field : document.getFields() ) { String key = field.name(); Object value = field.stringValue(); removeFromCache( entityId, key, value ); } } } finally { searcherManager.release( searcher ); } }
@Test public void shouldParseSecondTopLevelPdxDoubleField() { String[] fields = new String[] {"positions.sharesOutstanding"}; FlatFormatSerializer serializer = new FlatFormatSerializer(); PdxInstance pdx = createPdxInstance(); Document doc1 = SerializerTestHelper.invokeSerializer(serializer, pdx, fields); IndexableField[] fieldsInDoc = doc1.getFields("positions.sharesOutstanding"); Collection<Object> results = getResultCollection(fieldsInDoc, true); assertEquals(2, results.size()); assertTrue(results.contains(5000.0)); assertTrue(results.contains(4000.0)); }
@Test public void shouldParseSecondTopLevelPdxStringField() { String[] fields = new String[] {"positions.secId"}; FlatFormatSerializer serializer = new FlatFormatSerializer(); PdxInstance pdx = createPdxInstance(); Document doc1 = SerializerTestHelper.invokeSerializer(serializer, pdx, fields); IndexableField[] fieldsInDoc = doc1.getFields("positions.secId"); Collection<Object> results = getResultCollection(fieldsInDoc, false); assertEquals(2, results.size()); assertTrue(results.contains("IBM")); assertTrue(results.contains("AAPL")); }
@Test public void shouldParseTopLevelPdxStringField() { String[] fields = new String[] {"status"}; FlatFormatSerializer serializer = new FlatFormatSerializer(); PdxInstance pdx = createPdxInstance(); Document doc1 = SerializerTestHelper.invokeSerializer(serializer, pdx, fields); IndexableField[] fieldsInDoc = doc1.getFields("status"); Collection<Object> results = getResultCollection(fieldsInDoc, false); assertEquals(1, results.size()); assertTrue(results.contains("active")); }
@Test public void shouldParseRegionValueFieldForString() { String[] fields = new String[] {"name", "contacts.name", "contacts.email", "contacts.revenue", "contacts.address", "contacts.homepage.id", "contacts.homepage.title", "contacts.homepage.content", LuceneService.REGION_VALUE_FIELD}; FlatFormatSerializer serializer = new FlatFormatSerializer(); String str = new String("Hello world"); Document doc1 = SerializerTestHelper.invokeSerializer(serializer, str, fields); assertEquals(1, doc1.getFields().size()); assertEquals("Hello world", doc1.getField(LuceneService.REGION_VALUE_FIELD).stringValue()); }
@Test public void shouldQueryOnFieldWithAnalyzerInCollectionObject() { String[] fields = new String[] {"contacts.email"}; FlatFormatSerializer serializer = new FlatFormatSerializer(); HashSet<Person> contacts1 = createCollectionObjectContacts(); Customer customer = new Customer("Tommy Jackson", null, contacts1, null); Document doc1 = SerializerTestHelper.invokeSerializer(serializer, customer, fields); IndexableField[] fieldsInDoc = doc1.getFields("contacts.email"); Collection<Object> results = getResultCollection(fieldsInDoc, false); assertEquals(2, results.size()); assertTrue(results.contains("Tommi.Jackson@pivotal.io")); assertTrue(results.contains("Tommi2.Skywalker@pivotal.io")); }
@Test public void shouldQueryOnIntFieldInCollectionObject() { String[] fields = new String[] {"contacts.revenue"}; FlatFormatSerializer serializer = new FlatFormatSerializer(); HashSet<Person> contacts1 = createCollectionObjectContacts(); Customer customer = new Customer("Tommy Jackson", null, contacts1, null); Document doc1 = SerializerTestHelper.invokeSerializer(serializer, customer, fields); IndexableField[] fieldsInDoc = doc1.getFields("contacts.revenue"); Collection<Object> intResults = getResultCollection(fieldsInDoc, true); assertEquals(2, intResults.size()); assertTrue(intResults.contains(100)); assertTrue(intResults.contains(200)); }
@Test public void shouldParseRegionValueFieldForInteger() { String[] fields = new String[] {"name", "contacts.name", "contacts.email", "contacts.revenue", "contacts.address", "contacts.homepage.id", "contacts.homepage.title", "contacts.homepage.content", LuceneService.REGION_VALUE_FIELD}; FlatFormatSerializer serializer = new FlatFormatSerializer(); Integer integer = 15; Document doc1 = SerializerTestHelper.invokeSerializer(serializer, integer, fields); assertEquals(1, doc1.getFields().size()); assertEquals(15, doc1.getField(LuceneService.REGION_VALUE_FIELD).numericValue()); }
@Test public void shouldIndexPrimitiveStringIfRequested() { HeterogeneousLuceneSerializer mapper = new HeterogeneousLuceneSerializer(); Document doc = SerializerTestHelper.invokeSerializer(mapper, "sample value", new String[] {LuceneService.REGION_VALUE_FIELD}); assertEquals(1, doc.getFields().size()); assertEquals("sample value", doc.getField(LuceneService.REGION_VALUE_FIELD).stringValue()); }
@Test public void shouldIndexPrimitiveNumberIfRequested() { HeterogeneousLuceneSerializer mapper = new HeterogeneousLuceneSerializer(); Document doc = SerializerTestHelper.invokeSerializer(mapper, 53, new String[] {LuceneService.REGION_VALUE_FIELD}); assertEquals(1, doc.getFields().size()); assertEquals(53, doc.getField(LuceneService.REGION_VALUE_FIELD).numericValue()); }
@Test public void removeFieldFromExactIndexedDocumentRetainCorrectNumberOfFields() { Document document = new Document(); indexType.addToDocument( document, STRING_TEST_FIELD, "value" ); indexType.addToDocument( document, STRING_TEST_FIELD2, "value2" ); indexType.addToDocument( document, NUMERIC_TEST_FIELD, 1 ); indexType.addToDocument( document, NUMERIC_TEST_FIELD2, 2 ); indexType.removeFieldsFromDocument( document, NUMERIC_TEST_FIELD, null ); indexType.removeFieldsFromDocument( document, STRING_TEST_FIELD2, null ); assertEquals("Usual fields, doc values fields for user fields and housekeeping fields.", documentFieldsPerUserField * 2, document.getFields().size() ); assertEquals("Two string fields with specified name expected.", 2, getDocumentFields( document, STRING_TEST_FIELD ).length ); assertEquals("Two numeric fields with specified name expected.", 2, getDocumentFields( document, NUMERIC_TEST_FIELD2 ).length ); }
@Test public void removeFromExactIndexedDocumentRetainCorrectNumberOfFields() { Document document = new Document(); indexType.addToDocument( document, STRING_TEST_FIELD, "value" ); indexType.addToDocument( document, STRING_TEST_FIELD2, "value2" ); indexType.addToDocument( document, NUMERIC_TEST_FIELD, 1 ); indexType.addToDocument( document, NUMERIC_TEST_FIELD2, 2 ); indexType.removeFromDocument( document, STRING_TEST_FIELD, null ); assertEquals("Usual fields, doc values fields for user fields and housekeeping fields.", documentFieldsPerUserField * 3, document.getFields().size() ); assertEquals("Two string fields with specified name expected.", 2, getDocumentFields( document, STRING_TEST_FIELD2 ).length ); assertEquals("Two numeric fields with specified name expected.", 2, getDocumentFields( document, NUMERIC_TEST_FIELD ).length ); assertEquals("Two numeric fields with specified name expected.", 2, getDocumentFields( document, NUMERIC_TEST_FIELD2 ).length ); }
@Test public void testNullField() { String[] fields = new String[] {"s", "o", "s2"}; ReflectionLuceneSerializer mapper = new ReflectionLuceneSerializer(Type2.class, fields); Type2 type2 = new Type2("a", 1, 2L, 3.0, 4.0f, null); Document doc = invokeSerializer(mapper, type2, fields); assertEquals(1, doc.getFields().size()); assertEquals("a", doc.getField("s").stringValue()); assertNull(doc.getField("s2")); } }
@Test public void testIgnoreInvalid() { String[] fields = new String[] {"s", "o", "s2"}; ReflectionLuceneSerializer mapper = new ReflectionLuceneSerializer(Type2.class, fields); Type2 type2 = new Type2("a", 1, 2L, 3.0, 4.0f, "b"); Document doc = invokeSerializer(mapper, type2, fields); assertEquals(2, doc.getFields().size()); assertEquals("a", doc.getField("s").stringValue()); assertEquals("b", doc.getField("s2").stringValue()); }