use of edu.uci.ics.textdb.api.field.StringField in project textdb by TextDB.
the class RelationManagerTest method test10.
/*
* Test inserting multiple tuples to a table, getting them by a query, then deleting them by a query
*/
@Test
public void test10() throws Exception {
String tableName = "relation_manager_test_table";
String tableDirectory = "./index/test_table";
Schema tableSchema = new Schema(new Attribute("content", AttributeType.STRING), new Attribute("number", AttributeType.STRING));
RelationManager relationManager = RelationManager.getRelationManager();
relationManager.deleteTable(tableName);
relationManager.createTable(tableName, tableDirectory, tableSchema, LuceneAnalyzerConstants.standardAnalyzerString());
DataWriter dataWriter = relationManager.getTableDataWriter(tableName);
dataWriter.open();
Tuple insertedTuple = new Tuple(tableSchema, new StringField("test"), new StringField("1"));
dataWriter.insertTuple(insertedTuple);
Tuple insertedTuple2 = new Tuple(tableSchema, new StringField("test"), new StringField("2"));
IDField idField2 = dataWriter.insertTuple(insertedTuple2);
Tuple insertedTuple3 = new Tuple(tableSchema, new StringField("test"), new StringField("3"));
dataWriter.insertTuple(insertedTuple3);
dataWriter.close();
// test should match all 3 tuples
Query allTupleQuery = new TermQuery(new Term("content", "test"));
DataReader allTupleReader = relationManager.getTableDataReader(tableName, allTupleQuery);
int tupleCounter = 0;
allTupleReader.open();
while (allTupleReader.getNextTuple() != null) {
tupleCounter++;
}
allTupleReader.close();
Assert.assertEquals(3, tupleCounter);
// tuple 2 should be deleted
Query tuple2Query = new TermQuery(new Term("number", "2"));
dataWriter.open();
dataWriter.deleteTuple(tuple2Query);
dataWriter.close();
Tuple deletedTuple = relationManager.getTupleByID(tableName, idField2);
Assert.assertNull(deletedTuple);
relationManager.deleteTable(tableName);
}
use of edu.uci.ics.textdb.api.field.StringField in project textdb by TextDB.
the class SampleExtraction method parsePromedHTML.
public static Tuple parsePromedHTML(String fileName, String content) {
try {
Document parsedDocument = Jsoup.parse(content);
String mainText = parsedDocument.getElementById("preview").text();
Tuple tuple = new Tuple(PromedSchema.PROMED_SCHEMA, new StringField(fileName), new TextField(mainText));
return tuple;
} catch (Exception e) {
return null;
}
}
use of edu.uci.ics.textdb.api.field.StringField in project textdb by TextDB.
the class TwitterSample method writeTwitterIndex.
public static void writeTwitterIndex() throws Exception {
RelationManager relationManager = RelationManager.getRelationManager();
relationManager.deleteTable(twitterClimateTable);
relationManager.createTable(twitterClimateTable, "../index/twitter/", TwitterSchema.TWITTER_SCHEMA, LuceneAnalyzerConstants.standardAnalyzerString());
DataWriter dataWriter = relationManager.getTableDataWriter(twitterClimateTable);
dataWriter.open();
int counter = 0;
JsonNode jsonNode = new ObjectMapper().readTree(new File(twitterFilePath));
for (JsonNode tweet : jsonNode) {
try {
String text = tweet.get("text").asText();
Long id = tweet.get("id").asLong();
String tweetLink = "https://twitter.com/statuses/" + id;
JsonNode userNode = tweet.get("user");
String userScreenName = userNode.get("screen_name").asText();
String userLink = "https://twitter.com/" + userScreenName;
String userName = userNode.get("name").asText();
String userDescription = userNode.get("description").asText();
Integer userFollowersCount = userNode.get("followers_count").asInt();
Integer userFriendsCount = userNode.get("friends_count").asInt();
JsonNode geoTagNode = tweet.get("geo_tag");
String state = geoTagNode.get("stateName").asText();
String county = geoTagNode.get("countyName").asText();
String city = geoTagNode.get("cityName").asText();
String createAt = tweet.get("create_at").asText();
Tuple tuple = new Tuple(TwitterSchema.TWITTER_SCHEMA, new TextField(text), new StringField(tweetLink), new StringField(userLink), new TextField(userScreenName), new TextField(userName), new TextField(userDescription), new IntegerField(userFollowersCount), new IntegerField(userFriendsCount), new TextField(state), new TextField(county), new TextField(city), new StringField(createAt));
dataWriter.insertTuple(tuple);
counter++;
} catch (RuntimeException e) {
e.printStackTrace();
continue;
}
}
dataWriter.close();
System.out.println("write twitter data finished");
System.out.println(counter + " tweets written");
}
use of edu.uci.ics.textdb.api.field.StringField in project textdb by TextDB.
the class ExcelSinkTest method writeSampleExcelFile.
/**
* Create two tuples, write into a excel file. Need to manually delete the generated file.
* @throws ParseException
*/
@Test
public void writeSampleExcelFile() throws Exception {
ArrayList<String> attributeNames = new ArrayList<>();
attributeNames.add(TestConstants.FIRST_NAME);
attributeNames.add(TestConstants.LAST_NAME);
attributeNames.add(TestConstants.DESCRIPTION);
// Prepare the expected result list
List<Span> list = new ArrayList<>();
Span span1 = new Span("firstName", 0, 5, "bruce", "bruce");
Span span2 = new Span("lastnName", 0, 5, "jacki", "jacki");
list.add(span1);
list.add(span2);
Attribute[] schemaAttributes = new Attribute[TestConstants.ATTRIBUTES_PEOPLE.length + 1];
for (int count = 0; count < schemaAttributes.length - 1; count++) {
schemaAttributes[count] = TestConstants.ATTRIBUTES_PEOPLE[count];
}
schemaAttributes[schemaAttributes.length - 1] = SchemaConstants.SPAN_LIST_ATTRIBUTE;
IField[] fields1 = { new StringField("bruce"), new StringField("john Lee"), new IntegerField(46), new DoubleField(5.50), new DateField(new SimpleDateFormat("MM-dd-yyyy").parse("01-14-1970")), new TextField("Tall Angry"), new ListField<>(list) };
IField[] fields2 = { new StringField("test"), new StringField("jackie chan"), new IntegerField(0), new DoubleField(6.0), new DateField(new SimpleDateFormat("MM-dd-yyyy").parse("09-18-1994")), new TextField("Angry Bird"), new ListField<>(list) };
Tuple tuple1 = new Tuple(new Schema(schemaAttributes), fields1);
Tuple tuple2 = new Tuple(new Schema(schemaAttributes), fields2);
IOperator inputOperator = Mockito.mock(IOperator.class);
Mockito.when(inputOperator.getOutputSchema()).thenReturn(new Schema(schemaAttributes)).thenReturn(null);
Mockito.when(inputOperator.getNextTuple()).thenReturn(tuple1).thenReturn(tuple2).thenReturn(null);
excelSink = new ExcelSink(new ExcelSinkPredicate());
excelSink.setInputOperator(inputOperator);
excelSink.open();
excelSink.collectAllTuples();
excelSink.close();
Files.deleteIfExists(Paths.get(excelSink.getFilePath()));
}
use of edu.uci.ics.textdb.api.field.StringField in project textdb by TextDB.
the class DictionaryMatcherTest method testSingleWordQueryInTextFieldUsingScan.
/**
* Scenario S-5:verifies GetNextTuple of DictionaryMatcher and single word
* queries in Text Field using SCANOPERATOR
*/
@Test
public void testSingleWordQueryInTextFieldUsingScan() throws Exception {
ArrayList<String> names = new ArrayList<String>(Arrays.asList("tall"));
Dictionary dictionary = new Dictionary(names);
// create a data tuple first
List<Span> list = new ArrayList<Span>();
Span span = new Span("description", 0, 4, "tall", "Tall");
list.add(span);
Attribute[] schemaAttributes = new Attribute[TestConstants.ATTRIBUTES_PEOPLE.length + 1];
for (int count = 0; count < schemaAttributes.length - 1; count++) {
schemaAttributes[count] = TestConstants.ATTRIBUTES_PEOPLE[count];
}
schemaAttributes[schemaAttributes.length - 1] = RESULTS_ATTRIBUTE;
IField[] fields1 = { new StringField("bruce"), new StringField("john Lee"), new IntegerField(46), new DoubleField(5.50), new DateField(new SimpleDateFormat("MM-dd-yyyy").parse("01-14-1970")), new TextField("Tall Angry"), new ListField<Span>(list) };
IField[] fields2 = { new StringField("christian john wayne"), new StringField("rock bale"), new IntegerField(42), new DoubleField(5.99), new DateField(new SimpleDateFormat("MM-dd-yyyy").parse("01-13-1974")), new TextField("Tall Fair"), new ListField<Span>(list) };
Tuple tuple1 = new Tuple(new Schema(schemaAttributes), fields1);
Tuple tuple2 = new Tuple(new Schema(schemaAttributes), fields2);
List<Tuple> expectedResults = new ArrayList<Tuple>();
expectedResults.add(tuple1);
expectedResults.add(tuple2);
List<String> attributeNames = Arrays.asList(TestConstants.FIRST_NAME, TestConstants.LAST_NAME, TestConstants.DESCRIPTION);
List<Tuple> returnedResults = DictionaryMatcherTestHelper.getQueryResults(PEOPLE_TABLE, dictionary, attributeNames, KeywordMatchingType.SUBSTRING_SCANBASED);
boolean contains = TestUtils.equals(expectedResults, returnedResults);
Assert.assertTrue(contains);
}
Aggregations