代码之家  ›  专栏  ›  技术社区  ›  Marks

MS-Sql全文搜索与LIKE表达式

  •  3
  • Marks  · 技术社区  · 16 年前

    许多应该搜索的字段不在同一个表中。

    例如:搜索“5124 Peter”应返回所有项目,即。。。

    • 有5124的身份证,
    • 标题或描述中有“彼得”
    • 有5124的项目类型id
    • 由街道地址中带有“5124”或“peter”的用户创建。

    提前谢谢, 标志

    3 回复  |  直到 8 年前
        1
  •  1
  •   greggersh    16 年前

    我建议你看看Apache Solr( http://lucene.apache.org/solr/ )或者Lucene( http://lucene.apache.org ). Solr是建立在Lucene之上的,两者都可以用来创建一个倒排的文件索引,基本上就像书后面的索引一样(术语1出现在文档1、3、7等中)。Solr是一个搜索引擎,有几个机制可以让你告诉它如何和在哪里索引数据。Lucene的级别更低,可以让您更灵活地设置索引和搜索架构。

    Solr的好处是它可以作为一个web服务使用,因此如果您不熟悉Java,可以用您选择的语言找到Solr客户机,并用任何适合您的语言编写索引和搜索代码。这里有一个指向Solr的客户机库列表的链接,包括一些C语言的客户机库# http://wiki.apache.org/solr/IntegratingSolr 我就从这里开始。

        2
  •  3
  •   Mike    16 年前

    您可以尝试一个独立的搜索引擎,例如Sphinx搜索:

    http://www.sphinxsearch.com/index.html

    http://lucene.apache.org/solr/

        3
  •  0
  •   Michael    15 年前

    全文搜索肯定比like表达式更有效。您可以做的是在视图上而不是在表上创建全文索引,因为它只是被搜索的索引,所以可以在以后保存表联接,这可以加快速度。该视图还允许您将bigint列转换为varchar,然后可以对其进行索引,例如将要搜索的所有列连接为一个varchar列。为此,您需要创建一个带有SCHEMABINDING的视图,并选择至少一个唯一的列,然后在该列上创建一个聚集的唯一索引。