首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于关键字短语的MySQL搜索

问基于关键字短语的MySQL搜索
EN

Stack Overflow用户
提问于 2012-07-02 16:14:47
回答 2查看 157关注 0票数 0

我正在用PHP编写一个原型拍卖/列表项目(MySQL后端)。

我有一个列表表(列表)和一个关键字表(listings_keyphrases),其中包含描述每个项目的多个关键字短语。每个列表都有多个关键字短语(根据需要),但是每个键短语都是字符--限制为20个字符。

因此,在listings_keyphrases中,一个清单可以有6行,每个行都有一个不同的关键字。listings_keyphrases表中的键短语是有序的。

我想实现一个搜索功能:

  1. 搜索与特定项相关的所有关键短语。
  2. 基于:的结果排序
    • 短语(如果搜索短语与特定关键字完全匹配)
    • 关键字顺序(我假设如果搜索匹配位置1处的关键字,则更有意义)。

​

我研究了MySQL全文和一些其他选项,但还没有找到最好的前进方向。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-02 16:37:48

我会尝试以下搜索引擎之一:

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

http://sphinxsearch.com/

它们都是开源的,有很好的文档记录,而且易于使用。

票数 3
EN

Stack Overflow用户

发布于 2012-07-02 16:43:36

我认为您必须使用全文搜索,因为您给出的排序结果之一是:如果搜索短语与特定的关键字完全匹配。与全文搜索,这将是结果与更多的分数。

对于您给出的第二个顺序,您必须定义某种相关性(而不是全文的相关性)。当您搜索一些关键字mysql并不关心它是第一个还是最后一个,你必须告诉它。如果插入关键阶段的顺序很重要,您可以通过全文搜索和ID_keyphrase (假设ID_keyphrase是自动数字的)的相关性来排序结果,或者可以添加一个字段来表示您的相关性,或者可以使用该位置(但位置作为数据库中的字段)。

举个例子:

代码语言:javascript
复制
Keyphrase_table
-----------
ID
listing_table_id
keyphrase
relevance

有了这个,你就可以拥有:

代码语言:javascript
复制
1   1  keyphrase2  1
2   1  keyphrase1  2
3   2  keyphrase1  1

id=1的清单有两个关键字短语(keyphrase2和keyphrase1),id=2的清单有一个关键字短语(keyphrase1)。

如果使用全文搜索"keyphrase1“,结果将是记录2和3。所有2个结果与全文具有相同的相关性,因为两者是相同的,但如果按顺序在搜索(Order by THE_RELEVANCE_OF_FULLTEXT DESC,relevance ASC)中添加新字段”相关性“,记录3将始终是第一个字段,因为它满足全文的请求,处于结果最低位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11297402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档