FEATURE: Respect search filters in semantic search (#220)
* FEATURE: Respect search filters in semantic search * lint
This commit is contained in:
		
							parent
							
								
									50d7289623
								
							
						
					
					
						commit
						2c87bb0d99
					
				|  | @ -30,15 +30,17 @@ module DiscourseAi | |||
|       end | ||||
| 
 | ||||
|       def search_for_topics(query, page = 1) | ||||
|         max_results_per_page = 50 | ||||
|         max_results_per_page = 100 | ||||
|         limit = [Search.per_filter, max_results_per_page].min + 1 | ||||
|         offset = (page - 1) * limit | ||||
|         search = Search.new(query, { guardian: guardian }) | ||||
|         search_term = search.term | ||||
| 
 | ||||
|         strategy = DiscourseAi::Embeddings::Strategies::Truncation.new | ||||
|         vector_rep = | ||||
|           DiscourseAi::Embeddings::VectorRepresentations::Base.current_representation(strategy) | ||||
| 
 | ||||
|         digest = OpenSSL::Digest::SHA1.hexdigest(query) | ||||
|         digest = OpenSSL::Digest::SHA1.hexdigest(search_term) | ||||
|         hyde_key = build_hyde_key(digest, SiteSetting.ai_embeddings_semantic_search_hyde_model) | ||||
| 
 | ||||
|         embedding_key = | ||||
|  | @ -53,7 +55,7 @@ module DiscourseAi | |||
|             .cache | ||||
|             .fetch(hyde_key, expires_in: 1.week) do | ||||
|               hyde_generator = DiscourseAi::Embeddings::HydeGenerators::Base.current_hyde_model.new | ||||
|               hyde_generator.hypothetical_post_from(query) | ||||
|               hyde_generator.hypothetical_post_from(search_term) | ||||
|             end | ||||
| 
 | ||||
|         hypothetical_post_embedding = | ||||
|  | @ -76,7 +78,9 @@ module DiscourseAi | |||
|             .where(topic_id: candidate_topic_ids, post_number: 1) | ||||
|             .order("array_position(ARRAY#{candidate_topic_ids}, topic_id)") | ||||
| 
 | ||||
|         guardian.filter_allowed_categories(semantic_results) | ||||
|         query_filter_results = search.apply_filters(semantic_results) | ||||
| 
 | ||||
|         guardian.filter_allowed_categories(query_filter_results) | ||||
|       end | ||||
| 
 | ||||
|       private | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue