所以,假设我有一个简单的句子数组。根据用户输入搜索它的最好方法是什么,并返回最接近的匹配项?PHP - 为搜索项搜索句子数组?
Levenshtein函数看起来很有前途,但我不认为我想用它们。用户输入可能很简单,如highest mountain
,在这种情况下,我想要搜索highest mountain
的数组中的句子。如果该确切短语不存在,那么我想要搜索具有highest
AND mountain
的句子,但不是背靠背的,依此类推。 Levenshtein函数在每个字符的基础上工作,但我真正需要的是每个字的基础。
当然,在某种程度上,Levenshtein函数可能仍然有用,因为我还想考虑包含短语highest mountains
(注意S)或类似句子的可能性。
你有什么建议?有没有这样做的PHP已经存在的任何系统? Levenshtein的功能会是一个适当的解决方案吗?是否有一个我不知道的基于词汇的Levenshtein函数?
谢谢!
EDIT - 我已经考虑两者的MySQL全文检索,并且还考虑打破两个A)输入端和B)每个句子成单词的单独的阵列的可能性,并且然后比较该方式,使用的Levenshtein功能以考虑在词的变化。 (颜色,颜色,颜色等)但是,我担心这种方法虽然可能很聪明,但可能会造成计算上的负担。
为什么不这样做的DB:文档可以直接从一个HTML文件或字符串创建?数据的来源是什么? – Niloct 2012-08-02 17:33:52
这比在PHP中手工构建的东西更适合在数据库中进行全文搜索。 – 2012-08-02 17:35:02
我正在将维基百科文章解析为句子。如果将这些数据存储在数据库,全文搜索,然后从数据库中删除这些条目会更快,我愿意接受该解决方案,尽管我无法想象它非常高效。 – Nathanael 2012-08-02 17:35:10