Forgot password?
 Register account
View 51113|Reply 52

Algolia 搜索

[Copy link]

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-29 23:54 |Read mode
Last edited by hbghlyj 2025-5-24 21:08当前配置:
  1. new Crawler({
  2.   appId: "KZZUGXICHQ",
  3.   apiKey: "xxxxxx",
  4.   maxUrls: null,
  5.   indexPrefix: "",
  6.   rateLimit: 8,
  7.   ignoreQueryParams: ["extra", "mobile", "authorid", "highlight", "ordertype"],
  8.   schedule: "every 1 day at 12:51 pm",
  9.   maxDepth: 10,
  10.   linkExtractor: ({ $, url, defaultExtractor }) => {
  11.     if (url.href == "https://kuing.cjhb.site/sitemap.xml") {
  12.       return defaultExtractor().map((a) =>
  13.         a.replace(
  14.           /^https:\/\/kuing.cjhb.site\/thread-(\d+)-(\d+)-\d+\.html$/,
  15.           (m, p1, p2) =>
  16.             p2 == "1"
  17.               ? "https://kuing.cjhb.site/forum.php?mod=viewthread&tid=" + p1
  18.               : "https://kuing.cjhb.site/forum.php?mod=viewthread&tid=" +
  19.                 p1 +
  20.                 "&page=" +
  21.                 p2,
  22.         ),
  23.       );
  24.     }
  25.     return [];
  26.   },
  27.   ignoreCanonicalTo: true,
  28.   actions: [
  29.     {
  30.       indexName: "kuing",
  31.       pathsToMatch: ["**"],
  32.       recordExtractor: ({ url, $, contentLength, fileType }) => {
  33.         const records = [];
  34.         $("table.plhin")
  35.           .get()
  36.           .map(function (a) {
  37.             $(a).find("i.pstatus").remove();
  38.             $(a).find("div.quote > blockquote").has("font[size='2']").remove();
  39.             const content = $(a).find("td.t_f").text().trim();
  40.             if (content != "") {
  41.               records.push({
  42.                 objectID: $(a).prop("id").slice(3),
  43.                 date: $(a).find('em[id^="authorposton"]').text(),
  44.                 pid: parseInt($(a).prop("id").slice(3)),
  45.                 title: $("#thread_subject").text(),
  46.                 author: $(a).find(".authi a.xw1").text(),
  47.                 forum: $('div.z a[href^="forum-"]')
  48.                   .get()
  49.                   .map(
  50.                     (x) =>
  51.                       $(x)
  52.                         .attr("href")
  53.                         .match(/forum-(\d+)/)[1],
  54.                   ),
  55.                 keywords: $('meta[name="keywords"]').prop("content").split(","),
  56.                 totalposts: $("td.t_f").length,
  57.                 content: content,
  58.               });
  59.             }
  60.           });
  61.         return records;
  62.       },
  63.     },
  64.   ],
  65.   sitemaps: ["https://kuing.cjhb.site/sitemap.xml"],
  66.   initialIndexSettings: {
  67.     kuing: {
  68.       advancedSyntax: true,
  69.       typoTolerance: false,
  70.       alternativesAsExact: ["ignorePlurals"],
  71.       allowTyposOnNumericTokens: false,
  72.       attributeCriteriaComputedByMinProximity: true,
  73.       attributesToSnippet: ["content:30"],
  74.       attributesForFaceting: ["forum", "author", "keywords"],
  75.       customRanking: ["desc(pid)"],
  76.       distinct: 1,
  77.       highlightPostTag: "</span>",
  78.       highlightPreTag: '<span class="algolia-docsearch-suggestion--highlight">',
  79.       ignorePlurals: true,
  80.       minProximity: 1,
  81.       minWordSizefor1Typo: 3,
  82.       minWordSizefor2Typos: 7,
  83.       separatorsToIndex: "!#()[]{}*+-_一,:;<>?@/\\^|%&~§`'‘’“”†‡",
  84.       ranking: [
  85.         "words",
  86.         "filters",
  87.         "typo",
  88.         "attribute",
  89.         "proximity",
  90.         "exact",
  91.         "custom",
  92.       ],
  93.       queryLanguages: ["zh", "en"],
  94.       removeWordsIfNoResults: "allOptional",
  95.       searchableAttributes: [
  96.         "unordered(title)",
  97.         "unordered(keywords)",
  98.         "unordered(content)",
  99.       ],
  100.     },
  101.   },
  102.   safetyChecks: { beforeIndexPublishing: { maxLostRecordsPercentage: 10 } },
  103. });
Copy the Code

411

Threads

1623

Posts

110K

Credits

Credits
11833

Show all posts

abababa Posted 2025-3-30 10:12
搜索的结果有的还是不太准确,比如
“Lagrange乘数法”,结果有很多无关的。
“拉格朗日乘数法”,只有一个结果。
“极线”,也有很多无关的。

两个词的是用AND连起来吗?比如“极点 AND 椭圆”,只有三个结果,感觉没找全。

411

Threads

1623

Posts

110K

Credits

Credits
11833

Show all posts

abababa Posted 2025-3-30 10:33
hbghlyj 发表于 2025-3-30 10:28
Algolia有很多配置,我不太懂,很多设为默认值,以下为当前Algolia配置您可以看看哪些需要调整:
...
我不懂啊。就是像我在11楼里说的那些,让它更准确、更全面点。不全面是不是因为还没能扫描完全站,扫描完了就好了呢?

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-30 10:38
abababa 发表于 2025-3-30 02:12
两个词的是用AND连起来吗
不用吧,它会中文分词
Language-specific configurations

411

Threads

1623

Posts

110K

Credits

Credits
11833

Show all posts

abababa Posted 2025-3-30 10:38
hbghlyj 发表于 2025-3-30 10:37
不用吧,它会中文分词
那比如我想搜索帖子内容同时含有“极点”和“椭圆”这两个词的,要怎么去搜索呢?

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-30 10:41
abababa 发表于 2025-3-30 02:38
那比如我想搜索帖子内容同时含有“极点”和“椭圆”这两个词的,要怎么去搜索呢? ...
搜索出来28条结果,它会优先显示匹配的关键词较邻近的结果
Screenshot 2025-03-30 033929.png

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-30 11:41
abababa 发表于 2025-3-30 02:33
不全面是不是因为还没能扫描完全站,扫描完了就好了呢?
已经扫描完了吧。它每天都会过来扫描二万个帖子。不全面不知道是不是中文索引分词的原因

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-30 11:48
abababa 发表于 2025-3-30 02:12
搜索的结果有的还是不太准确
它好像是模糊搜索的
若需精确搜索,可以单击主导航“搜索”按钮进入Discuz高级搜索

411

Threads

1623

Posts

110K

Credits

Credits
11833

Show all posts

abababa Posted 2025-3-30 13:56
hbghlyj 发表于 2025-3-30 10:41
搜索出来28条结果,它会优先显示匹配的关键词较邻近的结果
只是换个顺序,换成“椭圆 极点”,结果就有很多无关的了,同样的两个词,结果应该是一样的吧。

411

Threads

1623

Posts

110K

Credits

Credits
11833

Show all posts

abababa Posted 2025-3-30 14:00
hbghlyj 发表于 2025-3-30 11:48
它好像是模糊搜索的
若需精确搜索,可以单击主导航“搜索”按钮进入Discuz高级搜索 ...
搜索“奇偶分析”,也有一些是无关的帖子。

还有一个问题是,我打奇偶分析这个词,开始只打了“奇偶”这两个字,它就已经找到一部分结果了,等我打完整个词,它会再找一次结果,这样我还以为第一次出现的结果就是最终结果,能不能等我点按钮之后才开始搜索呢?

Comment

🤔不知在哪里可以设置点按钮之后才开始搜索  Posted 2025-3-30 21:52

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-30 20:20
abababa 发表于 2025-3-30 06:56
只是换个顺序,换成“椭圆 极点”,结果就有很多无关的了,同样的两个词,结果应该是一样的吧。 ...
已經設為unordered,匹配项在属性中的位置不会影响排名

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-30 20:20
用Algolia的facet应该可以实现按版块、标签、作者筛选搜索,不知如何实现可参考wp search

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-30 20:26
kuing 发表于 2025-3-30 07:04
这个搜索结果的显示还很难看,CSS 还有很大的优化空间,是打算迟下再做优化吗? ...
代码来自wp search
CSS 也是从那里复制的,因此应该具有相同的外观
设计的外观是

右边post type, author, categories是过滤器,需要考虑怎么做

还有自动完成功能 下拉

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-31 02:23
应该有一个选项可以只搜索标题而不搜索内容
不知道如何实现

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-31 02:57
建立搜索索引时,有的字符应作分隔符,和语言有关
如何把顿号、加入Algolia分隔符

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-31 22:57
见algolia文档Normalization for logogram-based languages (CJK)

Detecting words in CJK logograms, Algolia follows a two-step process:
  • Use the Unicode (ICU) library to find words. This library is based on the MECAB dictionary, enriched with data from Wiktionary.
  • If that fails, use a sequential character-based search.

如何手动添加中文单词

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-3-31 23:40
Algolia提示:以下页面过大,无法索引
thread-8563-1-1.html
thread-8426-1-1.html
thread-12838-1-1.html
thread-11371-1-1.html

3163

Threads

7940

Posts

610K

Credits

Credits
64298
QQ

Show all posts

 Author| hbghlyj Posted 2025-4-1 05:31
Last edited by hbghlyj 2025-4-4 18:37
abababa 发表于 2025-3-30 03:12
搜索的结果有的还是不太准确,比如
“Lagrange乘数法”,结果有很多无关的。
“拉格朗日乘数法”,只有一个 ...
搜索结果不准确是否因为typo tolerance(容错)功能?
typo tolerance有4个选项:true, false, min, strict
默认为true
不知设为哪个比较好?
我现在把它改为了strict,您再试一下?

411

Threads

1623

Posts

110K

Credits

Credits
11833

Show all posts

abababa Posted 2025-4-4 15:09
hbghlyj 发表于 2025-4-1 05:34
上面 Allow typo on numeric tokens 这个选项默认为 True 允许数字输错
需要修改为 False 吗? ...
觉得这个还是不准确。比如还是用“Lagrange乘数法”作为搜索词,结果可以看到,它把带有“法”字的那些都找了出来,这明显不是我想搜索的内容。要怎么才能让它准确呢?就是不搜索无关的东西。但是如果帖子的文本本身不包含“Lagrange乘数法”这几个字,但在解题时明显使用了Lagrange乘数法这个方法的,却应该包含进来。

411

Threads

1623

Posts

110K

Credits

Credits
11833

Show all posts

abababa Posted 2025-4-4 21:03
hbghlyj 发表于 2025-4-4 18:21
如我们直接进行检索,检索结果会将单词(一个字)分开

用"乘数法"作为搜索词,结果可以看到
用加了引号的"乘数法"搜索,有好多都和这个词无关,比如第二页里就有很多无关的帖子。现在应该够全面了,但是应该让它更准确点。

Comment

已修改Algolia索引选项。关闭容错功能  Posted 2025-5-18 08:09

Mobile version|Discuz Math Forum

2025-6-3 23:19 GMT+8

Powered by Discuz!

× Quick Reply To Top Edit