Compare commits
	
		
			No commits in common. "e9d0c1b806284a609cfc36c1981fa4479afa12f9" and "21b6bfd67ea9bfe796f61785746e11ea022971e2" have entirely different histories.
		
	
	
		
			e9d0c1b806
			...
			21b6bfd67e
		
	
		
					 1 changed files with 1 additions and 37 deletions
				
			
		| 
						 | 
				
			
			@ -1,37 +1 @@
 | 
			
		|||
(ns cc.journeyman.elboob.search
 | 
			
		||||
  "Search the index for arbitrary tokens. It would be really nice if
 | 
			
		||||
   this could run in Scittle.")
 | 
			
		||||
 | 
			
		||||
(defn score-token 
 | 
			
		||||
  "Score this `token` in the context of this `index` and `path`.
 | 
			
		||||
   
 | 
			
		||||
   `index` is expected to be an index of the form compiled by
 | 
			
		||||
   `cc.journeyman.elboob.core/compile-index`, q.v."
 | 
			
		||||
  [index path token]
 | 
			
		||||
  (or ((index token) path) 1))
 | 
			
		||||
 | 
			
		||||
(defn score-path 
 | 
			
		||||
  "Score this `path`, in the context of this `index` and `tokens`.
 | 
			
		||||
   
 | 
			
		||||
   `index` is expected to be an index of the form compiled by
 | 
			
		||||
   `cc.journeyman.elboob.core/compile-index`, q.v."
 | 
			
		||||
  [index path tokens]
 | 
			
		||||
  (reduce * (remove zero?
 | 
			
		||||
                    (map #(score-token index path %)
 | 
			
		||||
                         tokens))))
 | 
			
		||||
 | 
			
		||||
(defn search
 | 
			
		||||
  "Search this `index`, expected to be an index of the form compiled by
 | 
			
		||||
   `cc.journeyman.elboob.core/compile-index`, q.v., for these tokens, 
 | 
			
		||||
   expected to be a sequence of strings representing individual lower
 | 
			
		||||
   case words. Returns a list with an ordering of file paths derived 
 | 
			
		||||
   from the product of the frequencies of the tokens in the indexed pages"
 | 
			
		||||
  [index tokens]
 | 
			
		||||
  (let [results (reduce #(assoc %1 %2 (index %2)) {} tokens)
 | 
			
		||||
        paths (set (flatten (map keys (vals results))))
 | 
			
		||||
        inverted (reduce
 | 
			
		||||
                  (fn [map path]
 | 
			
		||||
                    (assoc map path
 | 
			
		||||
                           (score-path index path tokens)))
 | 
			
		||||
                  {} paths)]
 | 
			
		||||
    (sort-by #(inverted %) > (keys inverted))))
 | 
			
		||||
(ns cc.journeyman.elboob.search)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue