From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: Re: Which Elisp data structure is fastest for searching? Date: Fri, 27 Dec 2024 14:16:14 +0300 Message-ID: References: <86wmfnc66h.fsf@gmail.com> <86bjwycahu.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39469"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.2.12 (2023-09-09) Cc: Help GNU Emacs To: Joel Reicher Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 27 12:17:00 2024 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1tR8Ky-000A7m-EP for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 27 Dec 2024 12:17:00 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tR8KO-0004ps-6r; Fri, 27 Dec 2024 06:16:24 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tR8KM-0004pQ-9v for help-gnu-emacs@gnu.org; Fri, 27 Dec 2024 06:16:22 -0500 Original-Received: from stw1.rcdrun.com ([217.170.207.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tR8KK-00063p-G1 for help-gnu-emacs@gnu.org; Fri, 27 Dec 2024 06:16:22 -0500 Original-Received: from localhost ([::ffff:41.75.190.33]) (AUTH: PLAIN admin, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 000000000007DCB6.00000000676E8C81.001274FB; Fri, 27 Dec 2024 04:16:16 -0700 Mail-Followup-To: Joel Reicher , Help GNU Emacs Content-Disposition: inline In-Reply-To: <86bjwycahu.fsf@gmail.com> Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:149024 Archived-At: * Joel Reicher [2024-12-27 02:06]: > Jean Louis writes: > > [...] > > > As is written in manual that hash table is very fast, I believe yes, > > though my search may not be. > > > > I will use following approach: > > > > - there will be list or hash with values that are to be searched, > > those values will have their ID, that information will be prepared for > > easier searching, like special symbols removed, only words remaining, > > maybe even small words could be removed > > This makes me think you don't yet know what your equality predicate is, and > whether your search space is totally or partially ordered, or > unordered. No, I have no idea to what equality predicate refers. You see, for searching it is better to remove new lines, and multiple spaces, emoji, symbols, any of characters that are not letters and numbers. So the search over such strings is easier to accomplish. Each string will have its ID. By using ID I can then find name, URL, description within the hash table. And actually, all of the information can be stored in the single hash. id-string -- contains "93206|We strive to bring customers" So searching would be inside of id-string keys. id-string contains id. then once found, I can extract other keys: id-name, it-title, id-description to show it as list of links. > I don't think you will be able to choose a data structure until you have > these things figured out. Yes, but I am on the verge. I have already list, alist and hash and I think hash is still easiest to do for reason of how to choose those keys. > > - there will be different hash with accurate information about the ID, > > such as title, URL, description > > I am not sure you are using the word "hash" the same way "hash table" does, > but if I'm right about the above, it doesn't matter, because you must figure > those things out first. Like this: | Key | Value | |----------------+-------------------------------------| | id-string | "123|name link description summary" | | id-name | "name" | | id-link | "url" | | id-description | "description" | That means all the search will be through values, and only keys named "-string". Once found, ID is taken from string, and then remaining values displayed. > > That is approach I know. Then I can give relevant information for > > website search. > > > > I wonder if Emacs can remain in memory keeping to answer HTTP requests, > > so that I do not load it every time. > > Yes it can, but I think worrying about that now is a bit like worrying about > how long to age the cheese when you haven't even milked the cow. Hahahahhaha -- Jean Louis