gpt4 book ai didi

search - 重建 Screwturn wiki 搜索索引

转载 作者:行者123 更新时间:2023-12-01 14:31:49 24 4
gpt4 key购买 nike

我的 wiki 开始返回不完整的搜索结果。

用户将搜索他们知道是文章一部分的术语,但该文章不会在结果中返回。

他们可以浏览文章并看到该页面确实包含搜索词。

这种情况经常发生,所以我一直在努力寻找解决方案。我没能找到有这个问题的人。搜索索引目前认为 wiki 中有 300 页,但实际上有 1193 页。

我按照 Screwturn 站点上的说明重建索引,包括调整 web.config 中的超时。我最终尝试了几次重建,尝试之间出现了大约 70 个错误。我看到了超时错误和主键违规。重建不会持续运行很长时间,通常少于 10 分钟。

有没有人成功重建索引?

有没有人见过同样类型的错误并能够解决它们?

有人知道重建完成后我会看到什么吗?我在想我会看到一个新的搜索索引,它引用了 1193 个页面,而不是 300 个页面。这是正确的吗?

如有任何帮助,我们将不胜感激。

以下是我看到的错误消息的三个示例。

System.Data.SqlClient.SqlException: Violation of UNIQUE KEY constraint 'UQ_IndexDocument'. Cannot insert duplicate key in object 'dbo.IndexDocument'. The statement has been terminated. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at ScrewTurn.Wiki.Plugins.SqlCommon.SqlClassBase.ExecuteNonQuery(DbCommand command, Boolean close, Boolean logError)

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at ScrewTurn.Wiki.Plugins.SqlCommon.SqlClassBase.ExecuteNonQuery(DbCommand command, Boolean close, Boolean logError)

System.Data.SqlClient.SqlException: Violation of PRIMARY KEY constraint 'PK_IndexDocument'. Cannot insert duplicate key in object 'dbo.IndexDocument'. The statement has been terminated. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at ScrewTurn.Wiki.Plugins.SqlCommon.SqlClassBase.ExecuteNonQuery(DbCommand command, Boolean close, Boolean logError)

(7 月 30 日更新)我尝试删除 IndexDocument 记录并再次运行重建,但结果相同。该索引的大小没有增加。我查看了 IndexDocument 表上的记录,它们停在其中一个命名空间的 M 篇文章中。这解释了为什么搜索以 M 之后开头的词失败。此外,只有两个 namespace 被索引。我在重建索引时查看了管理主页,等待轮子停止转动。似乎什么都没有改变。我检查了系统日志,没有看到任何错误。我从管理主页重新启动应用程序后,超时错误再次出现在日志中。这给我留下的问题多于答案。

  1. 索引重建成功或者索引停止重建的标志是什么?我认为这是在单击重建链接后运行的纺车。

  2. 我研究了超时错误,所有内容都指向一个太短的超时值,论坛帖子说更新 .NET 代码中的超时值,或调整服务器上的查询等待属性。有没有人在这方面取得成功?您是怎么做的?

  3. 有谁知道 wiki 正在运行什么脚本来重建索引?是否可以从 SQL 服务器手动运行它?

更新:我不得不放弃寻找答案。我确实了解到,您可以强制索引一次重建一篇文章,只需更新 IndexDocument 表中未列出的粒子即可。虽然这确实有效,但当从您所在的命名空间查看 AllPages 页面时,它会导致一些意外行为。AllPages 页面通常按字母顺序列出所有文章(以及每个部分的字母)。执行此强制更新后,AllPages 页面将按字母顺序显示页面,但各部分的顺序将类似于“#、A、B”。下一批页面将是“B、C、K”等。不太理想,但搜索确实再次起作用。对于其他有问题的人,仅供引用,有一种解决方法。这将是我的最终解决方案,因为 wiki 将被淘汰并移至更强大(和支持!)的知识库。感谢 Dreamwalker 和 Doug。

最佳答案

检查没有页面内容的页面并删除这些页面 - 这修复了我的索引。

G   SYSTEM  Page OnTime-Tools created
G wkrzystek Page update requested for OnTime-Tools
E SQL Server Pages Storage Provider+SYSTEM System.Data.SqlClient.SqlException: Transaction (Process ID 173) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
E SQL Server Pages Storage Provider+SYSTEM Page indexing error for OnTime-Tools (skipping page): System.NullReferenceException: Object reference not set to an instance of an object.
E SYSTEM http://websrv01/matrixwiki/Edit.aspx
System.Web thrown System.Web.HttpUnhandledException
E SYSTEM PageContent could not be retrieved for page OnTime-Tools - returning empty

我们遇到了同样的问题 - 我们的索引中只有 670 页中的 510 页,并且内容在“O”之后停止。我找不到任何其他解决方案,所以我开始查看 SQL 日志表。我注意到添加了一个页面,但在尝试存储页面内容时出现 SQL 死锁。在那组错误之后,每次修改页面并且尝试更新索引时,它都会生成“无法检索 PageContent”消息,并且索引会停在那里。

关于search - 重建 Screwturn wiki 搜索索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com