Skip to content

Commit

Permalink
Tuefind 10.0-related bugfixes
Browse files Browse the repository at this point in the history
  • Loading branch information
mtrojan-ub committed Aug 20, 2024
1 parent b429d96 commit 3a903b3
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 14 deletions.
33 changes: 21 additions & 12 deletions src/main/java/org/vufind/solr/indexing/PrintBrowseHeadings.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ private boolean isLinkedFromBibData(String heading)
}


private SolrFieldIterator getBibIterator(String bibPath, String luceneField)
private SolrFieldIterator getBibIterator(String bibPath, String luceneField, String filter)
throws Exception
{
String fieldIteratorClass = "org.vufind.solr.indexing.SolrFieldIterator";
Expand Down Expand Up @@ -170,18 +170,19 @@ private SolrFieldIterator getBibIterator(String bibPath, String luceneField)
}

return (SolrFieldIterator)(Class.forName(fieldIteratorClass)
.getConstructor(String.class, String.class)
.newInstance(bibPath, luceneField));
.getConstructor(String.class, String.class, String.class)
.newInstance(bibPath, luceneField, filter));
}


public void create(String bibPath,
String luceneField,
String authPath,
String outFile)
String outFile,
String filter)
throws Exception
{
try (SolrFieldIterator bibFieldIterator = getBibIterator(bibPath, luceneField)) {
try (SolrFieldIterator bibFieldIterator = getBibIterator(bibPath, luceneField, filter)) {
this.luceneField = luceneField;

IndexReader bibReader = DirectoryReader.open(FSDirectory.open(new File(bibPath).toPath()));
Expand All @@ -192,7 +193,8 @@ public void create(String bibPath,
try {
nonprefAuthFieldIterator = new SolrFieldIterator(authPath,
System.getProperty("field.insteadof",
"insteadOf"));
"insteadOf"),
filter);
} catch (IndexNotFoundException e) {
// If no data has been written to the index yet, this exception
// might get thrown; in that case, we should skip loading authority
Expand All @@ -215,8 +217,7 @@ public boolean isSatisfiedBy(Object obj) {
return true;
}
}
}
);
});

nonprefAuthFieldIterator.close();
}
Expand All @@ -231,24 +232,32 @@ public boolean isSatisfiedBy(Object obj) {
public static void main(String args[])
throws Exception
{
if (args.length != 3 && args.length != 4) {
if (args.length != 3 && args.length != 4 && args.length != 5) {
System.err.println
("Usage: PrintBrowseHeadings <bib index> <bib field> "
+ "<auth index> <out file>");
System.err.println("\nor:\n");
System.err.println
("Usage: PrintBrowseHeadings <bib index> <bib field>"
+ " <out file>");
System.err.println("\nor:\n");
System.err.println
("Usage: PrintBrowseHeadings <bib index> <bib field>"
+ " <auth index> <out file> <filter>");

System.exit(0);
}

PrintBrowseHeadings self = new PrintBrowseHeadings();

if (args.length == 4) {
self.create(args[0], args[1], args[2], args[3]);
if (args.length == 5) {
String authPath = (args[2] == null || args[2].isEmpty()) ? null : args[2];
String filter = (args[4] == null || args[4].isEmpty()) ? null : args[4];
self.create (args[0], args[1], authPath, args[3], filter);
} else if (args.length == 4) {
self.create(args[0], args[1], args[2], args[3], null);
} else {
self.create(args[0], args[1], null, args[2]);
self.create(args[0], args[1], null, args[2], null);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,15 @@ public class SolrFieldIterator implements AutoCloseable, Iterator<BrowseEntry>,
protected List<LeafReaderContext> leafReaders;

private String field;
private String filter;
private Normalizer normalizer;

TermsEnum tenum = null;

private BrowseEntry nextEntry = null;
private boolean exhausted = false;

public SolrFieldIterator(String indexPath, String field) throws Exception
public SolrFieldIterator(String indexPath, String field, String filter) throws Exception
{
// Open our composite reader (a top-level DirectoryReader that
// contains one reader per segment in our index).
Expand All @@ -54,6 +55,7 @@ public SolrFieldIterator(String indexPath, String field) throws Exception
leafReaders = new ArrayList<>(reader.getContext().leaves());

this.field = field;
this.filter = filter;

String normalizerClass = System.getProperty("browse.normalizer");
normalizer = NormalizerFactory.getNormalizer(normalizerClass);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class StoredFieldIterator extends SolrFieldIterator

public StoredFieldIterator(String indexPath, String field, String filter) throws Exception
{
super (indexPath, field);
super (indexPath, field, filter);
this.filter = filter;

sortField = Utils.getEnvironment("SORTFIELD");
Expand Down

0 comments on commit 3a903b3

Please sign in to comment.