End Plate

                                    ~ ~ ~ * ~ ~ ~

                                            __

                              .-----.-----.|  |.----.

                              |__ --|  _  ||  ||   _|

                              |_.-----.-----.--.--|  |

                                |  _  |  _  |     |  |

                                |   __|___._|__|__|__|

                                |__|     ... .-..

                                    ~ ~ ~ * ~ ~ ~

"Parting is such sweet sorrow"


Romeo And Juliet
Act 2,
Scene 2,
176-185


Getting Started With Synapticloop Panl
A rather pleasing companion to the Apache® Solr® Faceted Search Engine.


[1] Thanks for checking out this footnote.

[2] At the time of writing no useful results were returned by any of the large search engines for 'Solr Panl' :).

[3] 'Sensibly' is a bit of a vague term... Panl strips out any unexpected characters and ensures that it is valid.  For example, if Solr (and therefore) Panl is expecting an integer parameter and the value 5gs6 is passed through, Panl will remove any non-numeric characters and parse the number - returning 56.  For values that cannot be converted, the value will be ignored and not passed through to the Solr server.

[4] To be honest a good example of this does not spring to mind. However, it was straight-forward to implement, and became a case of "Better to have and not need, than need and not have."

[5] A LPSE length of 3 with the five mandatory codes would provide 185,193 facets, a length of 4 would provide 10,556,001

[6] A LPSE length of 3 with the five mandatory codes and one optional code would provide 175,616 facets, a length of 4 would provide 9,834,496

[7] Sigh... depending on memory, processing power, disk space etc.

[8] There was a delay from the start of writing this book, to the implementation of specific Solr search fields.  Whilst the functionality could have been shoe-horned into the mechanical pencils collection example, it didn't quite work with the fields available, and to do so would be a little contrived.  However it did make it into the Bookstore walkthrough example.

[9] Examples with specific dates are notoriously hard to put into examples as by the time you read this book, the example dates will be well out of range.  However, there is an example data set (simple-date) which is included within the release package which has random dates spanning +/- 10 years from the writing of this book which can be used to test out the features, however you will need to index the data set with separate commands.  There is a utility included in the distribution package that will generate sample data from +/- 10 years which can then be re-indexed.

[10] Whilst useful in parts for the configuration, tailing the logs tends to be an easier way to debug what is going through to the Solr server.

[11] This is probably not the fairest of comparisons, as a lot of the underlying Solr query implementation could be hidden behind the scenes anyhow.  However, what Panl can do is automatically have CaFUPs for multiple FieldSets, facets, and queries which will automatically build the query, the returned facets, the fields, and more.

[12] The exception to this rule are any defined OR facets, which will increase the number of results that are returned.

[13] When using Apache Solr version 10, the minimum version of Java will be 21, however Panl will support java version 11 for integrations with older versions of Solr

[14] The Solr query boosting (e.g. ^4) designator is available, it just isn't available through a passed in URL query parameter, it is configured in Panl when a specific field is searched.

[15] Our recommendation is to use a Java version of at least 21 as Solr 10 will have this as a minimum requirement.

[16] The example data 'techproducts' included with the Apache Solr instance is a reasonable test dataset, however, the way the schema and collections are designed places an emphasis more on testing ingestion and searching, rather than on a functional search set.

[17] This reference is from an Apple Macintosh system, but it is the same for most flavours of Linux.

[18] All care has been taken when compiling this table and the command line options should be correct, please do check the Solr command line help if something is not working as expected.

[19] Commands weren't included (i.e. rm -rf or rmdir /S /Q) as recursive forced deletion of directories can be a very dangerous thing...

[20] This book does not use the Solr schema version of 1.7 despite the fact that the default schema for Solr version 9.10.0 uses this schema version.

[21] Your configuration file and Solr version will define an XML element with this format, line numbers are not provided as they change frequently between versions.

[22] This can be seen in the file system indexing walkthrough which was added after the initial book and Panl server release.

[23] Historically, Java based examples for servers seem to have been based on the ubiquitous Pet Store, time for something new...

[24] This is not set as a Specific Solr Search Field - as there is a separate field which will do this - see the Text (Author) Solr Field Name.

[25] In effect, the panl- schema name may interfere/conflict with current or future Panl server URL registrations - think panl-results-viewer as an example.

[26] This is cheating a little here, as the indexed book title is actually "Mary's Angel", however the title was deliberately made to be "Mary 's Angel" (with an additional space in the title). This allows a match, else there would need to be explanations on word-stemming and Solr query matching which is beyond the scope of this book.

[27] Or, the mistakes that were made with the implementation.

[28] For the generator, the class com.synapticloop.panl.generator.bean.field.BasePanlField uses the value to determine which field type Panl will serve this as, and the class com.synapticloop.panl.generator.bean.PanlCollection uses the value to determine the default field type to use, additionally, it references the SUPPORTED_SOLR_FIELD_TYPES set to ensure only supported fields are generated.  For the Panl server the class com.synapticloop.panl.server.handler.fielderiser.field.BaseField uses this type for validation of incoming values and for determining properties available.

[29] Ranges are available in Solr on a StrField, however, they will not work in Panl.

[30] This type is generally analysed and used for keyword searches and highlighting.  You could have a prefix and suffix for this field type, however, for any TextField that has a large amount of text in it, selecting this field as a facet with a prefix and suffix may be too long for the URL.

[31] Facets are not recommended to be Specific Solr Search Fields unless you understand the impact of this.

[32] This is not true for managed schema versions of 1.7 - when using this version analysed fields CANNOT BE set as facets - although there is a workaround to do this.

[33] The value could also be 'null' or non-existent as well, and if using BOOLEAN Checkboxes, could also be in a don't care state.

[34] Sorting by the index in ascending order is fully supported in Solr, sorting by the index in descending is done by post-processing on the Panl server.  This was implemented as there are some very good use-cases for this functionality - for example sorting by the year published to have the earliest (thus newest) releases first.

[35] Yes, this is not actually a mechanical pencil, however it was kept in as a reference point.

[36] Just to be clear, the Solr field must be analysed and stored.  This does not mean all analysed and stored fields must be set as Specific Solr Search Field.

[37] This has been renamed to _text_ in Solr schema version 1.7 and later.

[38] In some instances, the properties file layout would have been better suited to JSON, however, comments are not allowed in JSON files, which makes explaining the file a lot harder.  Admittedly, HJSON (or some alternative) could have been used, and parsed on the way into Panl, but this would reduce portability - sigh - these are the decisions which can reverberate through time and code.

[39] Other versions of Solr may have different options

[40] Using a decimal point as a separator is a very English centred view, adding this supports a wider range of countries and cultures which aren't English centric - alas this does not support the Arabic decimal separator - ٫ (U+066B).

[41] Of course, an or separator could have been used as well.

[42] This may not be entirely true, there is an instance where you may want to include single result facets, this is not (yet) included in Panl.

[43]Admittedly this is rather annoying having to know the value ranges ahead of time, however there are some niceties built into Panl to use the minimum and maximum values.

[44]Once again, annoying to have to know the values.

[45] The number of books in the dataset is growing over time, so these numbers may not reflect your Panl Results Viewer.

[46] Note: this is for version 9 of the Apache Solr server, previous versions may have a different JSON response object.   The in-build Panl Results Viewer web app caters for the current and supported previous versions.

[47] The HTML has been cleaned from the in-built web app for readability purposes

[48] Here 'Author' is the name of the document attribute, the actual Solr field name is text_author.

[49] This was mentioned in the early chapters of this book

[50] Feature/bug - After much searching, getting to the bottom of why this is the case is very problematic, and, at the point of writing, there was only one mention of why this would occur, with no details of where this information comes from.

[51] This is not entirely correct as it will be parsed to a collection and shard number behind the scenes, however, this is a valid URL.

[52] Although 'when all it does' is almost dismissive - in fact it has so many configuration options for fields and FieldSets that the total effort and thought that went into the code is not insignificant.

[53] Now 17 years :)

[54] XML parsing of Government based documentation is an incredibly frustrating