结合 SQL 与外部搜索
Combine SQL with an external search
在我的例子中 SQL 用于结构化数据并考虑使用 Lucene 进行文本搜索。
是的,MSSQL 有全文,但 Lucene 提供了一些我想要的东西。
出于问题的目的任何外部搜索。
SQL里面有个主table有PK。
在 SQL 中有一些使用主要 table 和其他 table 的查询。
从外部搜索中,我将获得 Main.PK 列表作为过滤依据。
该列表可能从 1 到 100 万。
外部搜索是搜索中成本最高的部分。 SQL 部分非常有效。将 SQL PK 传递给外部并不是一个好的选择,因为我需要来自 SQL 查询的各种数据。从 Lucene 返回的唯一东西是 PK(术语)和一些分数。
有最佳实践吗?
我看到的选项是
其中 Main.PK 在(来自外部搜索的 PK 值)
在#TEMP 中填充外部搜索 PK 值并加入其中
因为有时我需要分数,这似乎是最好的,因为我可以把
在#temp
中得分
在理想的世界中,会有这样的连接:
join exeternalvirtualtable as evt
on evt.PK = Main.PK
and syntax specific to the external search
我知道这个问题问得很多,但通常有类似的问题吗?
是否有 syntax/API 使外部搜索看起来像 MSSQL 的 table(或视图)?
MSSQL 到 Lucene 有类似的东西吗?
这是一个开始 OLE DB Providers and OPENROWSET
理想情况下,Lucene 的 .NET Framework Data Providers 将一些 SQL 语法映射到 Lucene。
如果有特定于 .NET 的解决方案,则该应用程序是 .NET。
产品 RavenDB 结合结构和非结构化 (Lucene) 搜索速度非常快,即使 Lucene return 有很多行,所以必须有一种方法可以做到这一点,而不是将 PK 放在 #temp 中.
Is there a syntax/API to make an external search look like a table (or view) to MSSQL?
您可以使用 Lucene 的 IndexSearcher class,它会给您一个包含相关文档(在您的情况下为 PK)的 TopDocs 对象。然后你可以根据这个结果填充一个SQL table。
您将需要这样的东西:
TopDocs topDocs = searcher.search(query, MAX_HITS);
for (int i = 0; i < topDocs.scoreDocs.length; i++) {
Document doc = searcher.doc(topDocs.scoreDocs[i].doc);
String pk = doc.get("PK");
// Connection to database and executing insertion
}
在我的例子中 SQL 用于结构化数据并考虑使用 Lucene 进行文本搜索。 是的,MSSQL 有全文,但 Lucene 提供了一些我想要的东西。 出于问题的目的任何外部搜索。
SQL里面有个主table有PK。 在 SQL 中有一些使用主要 table 和其他 table 的查询。
从外部搜索中,我将获得 Main.PK 列表作为过滤依据。 该列表可能从 1 到 100 万。
外部搜索是搜索中成本最高的部分。 SQL 部分非常有效。将 SQL PK 传递给外部并不是一个好的选择,因为我需要来自 SQL 查询的各种数据。从 Lucene 返回的唯一东西是 PK(术语)和一些分数。
有最佳实践吗?
我看到的选项是
其中 Main.PK 在(来自外部搜索的 PK 值)
在#TEMP 中填充外部搜索 PK 值并加入其中
因为有时我需要分数,这似乎是最好的,因为我可以把 在#temp 中得分
在理想的世界中,会有这样的连接:
join exeternalvirtualtable as evt
on evt.PK = Main.PK
and syntax specific to the external search
我知道这个问题问得很多,但通常有类似的问题吗?
是否有 syntax/API 使外部搜索看起来像 MSSQL 的 table(或视图)?
MSSQL 到 Lucene 有类似的东西吗?
这是一个开始 OLE DB Providers and OPENROWSET
理想情况下,Lucene 的 .NET Framework Data Providers 将一些 SQL 语法映射到 Lucene。
如果有特定于 .NET 的解决方案,则该应用程序是 .NET。
产品 RavenDB 结合结构和非结构化 (Lucene) 搜索速度非常快,即使 Lucene return 有很多行,所以必须有一种方法可以做到这一点,而不是将 PK 放在 #temp 中.
Is there a syntax/API to make an external search look like a table (or view) to MSSQL?
您可以使用 Lucene 的 IndexSearcher class,它会给您一个包含相关文档(在您的情况下为 PK)的 TopDocs 对象。然后你可以根据这个结果填充一个SQL table。
您将需要这样的东西:
TopDocs topDocs = searcher.search(query, MAX_HITS);
for (int i = 0; i < topDocs.scoreDocs.length; i++) {
Document doc = searcher.doc(topDocs.scoreDocs[i].doc);
String pk = doc.get("PK");
// Connection to database and executing insertion
}