[PATCH] D113995: [clangd] Dex Trigrams: Improve query trigram generation

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 29 15:47:50 PST 2021


sammccall added a comment.

Basically LG now, some of the changes are a bit mysterious to me though



================
Comment at: clang-tools-extra/clangd/index/dex/Trigram.cpp:47
+  const size_t NPOS = std::numeric_limits<size_t>::max();
+  llvm::SmallVector<std::pair<size_t, size_t>> Next(LowercaseIdentifier.size());
+  size_t NextTail = NPOS, NextHead = NPOS;
----------------
why the change from array to pair and 0 to NPOS?


================
Comment at: clang-tools-extra/clangd/index/dex/Trigram.cpp:82
+  //
+  // - First separator + first head
+  // - First head
----------------
Fist -> first
You're missing first separator only

I think examples might be clearer than a description of these.


================
Comment at: clang-tools-extra/clangd/index/dex/Trigram.cpp:102
+                  LowercaseIdentifier[NextHead]));
+    Position = NextHead;
+  }
----------------
(if the change to NPOS is just to avoid hitting Position == 0 on the first iteration, you could check it here instead)


================
Comment at: clang-tools-extra/clangd/index/dex/Trigram.cpp:148
 
+  // For queries with very few letters, emulate what generateIdentifierTrigrams
+  // outputs for the beginning of the Identifier.
----------------
Since the query trigram corresponds so closely to the query for short queries, I think it makes more sense to consider it the other way: generateIdentifierTrigrams is deciding which queries it wants to match and emulating this function.


================
Comment at: clang-tools-extra/clangd/index/dex/Trigram.cpp:151
+  if (UniqueTrigrams.empty()) {
+    // If a bigram can't be formed, we might prepend a separator.
+    std::string Result(1, LowercaseQuery.front());
----------------
nit: by prepending a separator, we form a bigram!
If a bigram can't be formed out of letters/numbers...


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113995/new/

https://reviews.llvm.org/D113995



More information about the cfe-commits mailing list