[Xon] Search Improvements

[Xon] Search Improvements 2.15.9

No permission to download
  • Fix searching by member without a keyword for a guest
  • Fix cached search results would be unexpectedly be viewable to anyone if they guessed the search result URL.
    • Affected versions; v2.8.1
    • These search URLs expire after a day
  • Fix search term on search result pages leaking information for non-viewable content
    • Affected version; v2.7.4, v2.7.5 and v2.8.1
    • Fix leaking thread title when using "In thread" search area, and rendering a bad phrase if the thread doesn't exist
    • Fix linking to non-active user profiles when searching by members
  • Workaround for an XF bug where the cached search results for a member search could be directly shared with a guest
    • Non-visible items on the result page where not rendered, but this does leak that there are hits in not viewable to guests areas.
  • Fix "before" search result term would print an integer instead of a human readable yyyy-mm-dd formatted string
  • Change 'no results found' handling to display search terms on the relevent page
    • If using ElasticSearch Essentials, recommend updating to v3.13.0+ as this change may impact some options which display on no results found.
  • Fixes for search term on results page
    • Add missing "With X thread" search term
    • Fix "Users" search term could fail to render the list of usernames
    • Add the 'content type' search term
  • Remove usage of utf8_* function(s), and use native php multi-byte functions instead.
  • Fix HTML markup error in svPushViewOtherCheckIntoXFES option description
  • Fix bug where 'weight by content type' feature didn't work as expected in general search
  • Thanks to @NamePros for sponsoring this update.
  • Display various search term constraints on the search results form.
    For developers to implement support in 3rd party add-ons:
    • Each search constraint needs a svSearchConstraint. prefixed phrase.
      Arrays are mapped to phrases by adding a _ for each sub-array/key as such; c[warning][points][lower] => svSearchConstraint.warning_points_lower
    • Each search order needs a svSearchOrder. prefixed phrase.
    • Extend XF\Entity\Search::getSpecializedSearchConstraintPhrase(string $key, $value) to provide custom phrase handling (ie node names)
    • Extend XF\Entity\Search::formatConstraintValue(string $key, $value) to provide custom formatting.
    • Extend XF\Entity\Search::setupConstraintFields to populate $svDateConstraint/$svUserConstraint/$svIgnoreConstraint properties which control formatting
  • Use the debug option "List all unphrased search constraints" which will dump unmapped contraints to search results page.
  • Fix incorrectly adding a return type to XF\Search\Search::isValidContentType
  • Fix typo in admincp options phrase
  • Fix "array_fill_keys() expects parameter 1 to be array, null given" error when content weighting has not been configured
This feature is powering tag autocomplete and username autocomplete which supports partial matches, and non-prefix lookups on SpaceBattles.

  • Require XenForo 2.2+, removes xf2.0/xf2.1 support
  • Add "Specialized index" support
    • Specialized search index allows generating single-purpose elastic search indexes while re-using as much XF search infrastructure as possible.
      • Elasticsearch index is more akin to an SQL table than an entire database, so for very specific tasks a single purpose search index works better.
      • A separate index also allows changing indexing properties and re-indexing just that one index without impacting the main search index
    • Implementation of a specialized index notes;
      At the core, a XenForo search handler is used to drive the functionality.
      • The search handler should implement the interface \SV\SearchImprovements\Search\Specialized\SpecializedData
      • Use the types MetadataStructure::KEYWORD or MetadataStructure::STR fields in setupMetadataStructure.
        These types will be rewritten to add .exact & [/icode].ngram[/icode] subfields. To skip this pass ['skip-rewrite' => true] to the MetadataStructure::addField's 3rd argument.
        • MetadataStructure::KEYWORD - shortish text which is semi-structured such as tags or usernames
        • MetadataStructure::STR - Arbitrary text which uses phrases of text
      • Register the search handler with the following content type fields
        • specialized_search_handler_class
        • entity
      • This handler really shouldn't be registered with search_handler_class content type field.
      • Add the behavior SV\SearchImprovements:SpecializedIndexable to the entity.
  • Fix the "Default search order" option would get reset when changing "Search options" under Enhanced Search Setup page
Top