Skip to content

supsup/courageoussearch

 
 

Repository files navigation

Overview of CourageousSearch

This is aimed at being a personal search tool. At the moment it uses the Brave Search API to perform searches. Eventually I expect it will support multiple "SearhConfigurations" and provide an easy way for users to add context and tuning to their search process.

This is likely only appealing to technically adventurous folks at the moment. In a few months it may grow to be more user friendly.

I also aspire to including Analysis processes that will include Machine Learning to do significant "heavy lifting" in helping users search and find.

Getting Started

  • (optional but helpful) sdkman is a nice option for grails/groovy/jdk and a bunch of other things
  • install groovy 3.0.11
  • install Grails (5.2.4)
    • grails will download/use the proper gradle (7.2)
      • note: I had problems with Gradle 8 getting mixed in because I was sloppy, beware!
  • install/use JDK 11 (or perhaps up to 16??)
  • clone this repo
  • build
  • bootRun

More information

For now the functionality is very basic, but perhaps interesting:

  • Use Brave Search API to:
    • send searches
    • retrieve source webpage content in addition to Brave's summary
  • Allow for setting SearchConfig
    • currently only tested with Brave, but should be extensible
    • quite useful for Brave Goggles
  • Allow for setting Context
    • for use in future Personal ML and result analysis
    • potentially also modify search parameters for a 'session' (aka context/intent/goal)

I stumbled across the Brave browser, and then continued blindly to discover the Brave API (which I really like). Things got more interesting for me when I found the Goggles beta functionality.

Two of the public Goggles are News from the Left and News from the Right. My intent with CourageousSearch (as opensource work) is to allow adventurous and technically-oriented users to have a tool that can help compare multiple "sources" in a convenience and semi-objective manner. (More on that later)

Full Disclosure: I am developing a larger, more involved project that builds upon these basics. That will focus on Enterprise interests, and bridging the "gap" between semantic search (ala ChatGPT etc) and keyword search (mostly Solr, which I am more familiar with).
I (currently) intend to keep the Enterprise-oriented project proprietary. It is still just a vague thought, and does not even have a working name at the moment.

I also hope to find a few spare hours to document where I have implemented Grails-thingies and provide pointers to examples. I expect that the majority of people using Grails already know these things, and therefor these 'pointers' may not be of much use. If you are interested, please feel free to contact me on this github project and let me know what you are interested in. No promises, but I do welcome the chance to help give back a bit if I can.

For anyone interested, OconEco is the start-up that has been primarily focused on economics. I am involved with the goal of improving stakeholder engagement and lowering the cost of decision making. More on that elsewhere...

Description:

SearchConfigurations roughly align to a specific search engine with a given (or default) set of parameters/setup. Please note that the initial configurations need valid Brave Search API tokens. See: https://api.search.brave.com/login

A Search is tpyically a specific search (user, or system generated) It will use a sepcific Search Tempalte or use the "default" The Template can have multiple configs (search multiple engines or engine configs)

The SearchConfig will handle performing the relevant search, as well as converting the results into proper persistence objects (search results & docs, but possibly also Solr results docs)

outline

  • Search
    • SearchConfiguration
    • SearchResults+
      • SearchConfiguration{1}
      • Document+

Screenshots

Example of the dashboard: Sample Dashboard

Example of a SearchResults page showing Brave description snippets: Search with Results

Example of a single result (aka Content, or document) with structuredContent which is the result of Readability4j parsing. Note: this is still a beta implementation on my part--more to come... Result Content with parsed (Readablity4j) structuredContent

Todo

  • implement reasonable tagging/commenting etc
    • upvote/downvote sites, docs, searchResults,...
    • allow users (and analyzer-bots) to assign tags and topics to various things
  • Fix ugly/bad UI
    • Proper approach for searchConfig setup and tokens
    • Better handling of picking contexts and configs
    • Better UI/UX in general
  • views-json: apply plugin:"org.grails.plugins.json-views
    • build script dependencies: classpath "org.grails.plugins.views-gradle:1.0.1" (or higher version) -Add Analysis functionality
    • e.g. rerank results based on personal preferences
    • NLP and other advanced ML analysis
      • sentence classifier to highlight questions, answers, interesting things, and fluff... (still very vague)
    • assess/rank the result set in general (not sure how or why yet, but seems interesting)
  • Add searchConfig to process solr results
    • Specifically connecto to a Solr-System solr instance contain local/personal crawled info
  • migrate to Micronaut

other & misc

See Readme.Developer.md if you have interest in the code, grails, etc

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Groovy 86.3%
  • CSS 8.2%
  • Roff 3.9%
  • Other 1.6%