问题标签 [full-text-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6451 浏览

database-design - 用于标记、云和搜索的最佳数据架构(如 StackOverflow)?

我很想知道 Stack Overflow 的标记和搜索是如何构建的,因为它似乎工作得很好。

如果我想做以下所有事情,什么是好的数据库/搜索模型:

  1. 在各种实体上存储标签,(标准化程度如何?即实体、标签和实体标签表?)
    • 搜索具有特定标签的项目
    • 构建适用于特定搜索结果集的所有标签的标签云
    • 如何在搜索结果中显示每个项目的标签列表?

也许将标签以标准化形式存储是有意义的,但也可以作为空格分隔的字符串用于#2、#4 和#3 的目的。想法?

我听说 Stack Overflow 使用 Lucene 进行搜索。真的吗?我听过一些讨论 SQL 优化的播客,但没有关于 Lucene 的内容。如果他们确实使用 Lucene,我想知道有多少搜索结果来自 Lucene,以及“向下钻取”标签云是否来自 Lucene。

0 投票
3 回答
3823 浏览

mysql - 全文搜索相关性是用什么来衡量的?

我正在制作一个测验系统,当测验制作者将问题插入问题库时,我将检查数据库中是否存在重复/非常相似的问题。

测试 MySQL 的MATCH() ... AGAINST(),当我针对 100% 相似的字符串进行测试时,我得到的最高相关性是 30+。

那么相关性究竟是什么?引用手册

相关性值是非负浮点数。零相关性意味着没有相似性。相关性是根据行中的单词数、该行中的唯一单词数、集合中的单词总数以及包含特定单词的文档(行)数来计算的。

我的问题是如果字符串重复,如何测试相关性值。如果它是 100% 重复的,请防止它被插入到问题库中。但如果只是如此相似,提示测验者验证,插入与否。那么我该怎么做呢?100% 相同字符串的 30+ 不是百分比,所以我很难过。

提前致谢。

0 投票
4 回答
5626 浏览

sql-server - SQL Server 用于全文索引的排名方法

我在 SQL Server 中全文搜索使用的排名存在一些问题。

假设用户搜索两个词“foo bar”。我们假设用户打算进行 OR 搜索,所以我们将“foo OR bar”传递给我们的 CONTAINSTABLE 调用。我们发现,包含 10 次“foo”但不包含“bar”的行的排名将比同时包含“foo”和“bar”的行高得多。我们希望具有这两个术语的行优先于仅具有一个术语的行多次。关于如何实现这一目标的任何建议?

我找到了与 RANKMETHOD 修饰符相关的文档,但这似乎仅适用于 SQL Enterprise 搜索,并且不适用于常规 SQL Server 2005 安装。我们也可以切换到 Lucene.Net,但我希望验证它有更好的可用排名。我们也可能会进行多次搜索并合并结果,但随着搜索单词数量的增加,这似乎是不可取的。

0 投票
1 回答
8755 浏览

ruby-on-rails - 如何将条件“IS NOT NULL”添加到 Thinking Sphinx 搜索

在此视频之后,我正在使用 Thinking Sphinx 进行全文搜索。

我想做以下事情:

问题是这行不通。似乎搜索方法只接受哈希条件。我尝试了几种方法,但我不知道如何将“published_at IS NOT NULL”表示为哈希......

0 投票
1 回答
15936 浏览

sql-server-2005 - 在 SQL Server 2005 中的视图上创建全文索引

我在 SQL Server 2005 中的视图上创建全文索引时遇到问题。查看文档我没有发现问题。我收到的错误消息是:“'Id' 不是强制执行全文搜索键的有效索引。全文搜索键必须是唯一的、不可为空的、非脱机的单列索引,是未在非确定性或不精确的非持久计算列上定义,最大大小为 900 字节。为全文键选择另一个索引。我已经能够验证错误字符串中的每个要求,除了“离线”要求,我真的不知道这意味着什么。我很确定它没有离线。

我有在下面创建目标表、视图和索引的脚本。我真的不需要下面示例中的视图,因为我试图隔离问题,所以它被简化了。

0 投票
2 回答
11910 浏览

sql-server-2005 - 在 SQL Server 2005 中对 PDF 文件使用全文搜索

我在 SQL Server 2005 中索引 PDF 文件时遇到了一个奇怪的问题,希望有人能提供帮助。我的数据库有一个名为 MediaFile 的表,其中包含以下字段 - MediaFileId int identity pk、FileContent image 和 FileExtension varchar(5)。我的 Web 应用程序在此表中存储文件内容没有问题,并且能够在 doc、xls 等上毫无问题地使用全文搜索 - 唯一不工作的文件扩展名是 PDF。在此表上对我知道存在于表中保存的 PDF 文件中的单词执行全文搜索时,这些文件不会在搜索结果中返回。

操作系统是 Windows Server 2003 SP2,我安装了Adob​​e iFilter 6.0。按照此博客条目上的说明,我执行了以下命令:

之后,我重新启动了 SQL Server,并通过执行以下命令验证了用于 PDF 扩展的 iFilter 已正确安装:

这将返回以下信息,看起来正确:

文档类型:.pdf
路径:C:\Program Files\Adobe\PDF IFilter 6.0\PDFFILT.dll

然后我(重新)在 MediaFile 表上创建索引,选择 FileContent 作为要索引的列,选择 FileExtension 作为其类型。向导创建索引并成功完成。为了测试,我正在执行这样的搜索:

这将返回包含该术语的 DOC 文件,但不返回任何 PDF 文件,尽管我知道表中肯定有包含单词house的 PDF 文件。

顺便说一句,我让这个工作了几分钟,上面的搜索返回了正确的 PDF 文件,但后来它又无缘无故地停止工作了。

关于什么可能阻止 SQL Server 2005 索引 PDF 的任何想法,即使安装了 Adob​​e iFilter 并且似乎已加载?

0 投票
2 回答
1188 浏览

sqlite - 在移动设备上进行全文搜索?

我们很快将着手开发新的移动应用程序。这个特定的应用程序将用于大量搜索基于文本的字段。整个小组对哪种数据库引擎最适合在移动平台上进行这些类型的搜索有什么建议吗?

具体包括 Windows Mobile 6,我们将使用 .Net CF。此外,一些基于文本的字段将介于 35 到 500 个字符之间。该设备将以两种不同的方法运行,批处理和 WiFi。当然,对于 WiFi,我们可以将请求提交给一个成熟的数据库引擎,然后再取回结果。这个问题围绕“批处理”版本展开,该版本将包含一个数据库,其中包含有关设备闪存/可移动存储卡的信息。

无论如何,我知道 SQLCE 有一些基本的索引,但是在您获得完整的版本之前,您不会进入真正花哨的“全文”样式索引,而这在移动平台上当然是不可用的。

数据的外观示例:

“围裙木匠可调节皮革容器口袋腰部五金腰带”等等等。

我还没有对任何其他具体选项进行评估,因为我认为我会利用这个小组的经验来首先为我指明一些具体的途径。

有什么建议/提示吗?

0 投票
4 回答
10632 浏览

sql-server - 检索 SQL Server 全文索引词

使用 Lucene,可以检索索引中包含的术语,即索引中的文档包含的唯一的词干词,不包括停用词。这对于生成自动完成建议非常有用。MS SQL Server 全文索引是否有类似的可能?

0 投票
4 回答
2009 浏览

.net - 如何分别抓取 Word 文档中的每一页文本(使用 .NET)?

我需要确定关键字出现在 Word 文档的哪些页面上。我有一些工具可以让我获取文档的文本,但没有任何工具可以告诉我文本出现在哪些页面上。有人对我有一个好的起点吗?我正在使用.NET

谢谢!

编辑:附加约束:我不能使用任何互操作的东西。

编辑2:如果有人知道可以做到这一点的稳定库,那也会有所帮助。我使用 Aspose,但据我所知,它什么都没有。

0 投票
2 回答
4689 浏览

mysql - 处理 MySQL 全文特殊字符

在布尔模式下使用 MySQL 全文搜索时,某些字符(如 + 和 -)用作运算符。如果我搜索“C++”之类的东西,它会将 + 解释为运算符。处理这些特殊字符的最佳做法是什么?

我目前使用的方法是将数据中的所有+字符转换为_plus。它还将 &、@、/ 和 # 字符转换为文本表示。