Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用soundex功能和django搜索引擎_Python_Mysql_Django_Soundex - Fatal编程技术网

Python 使用soundex功能和django搜索引擎

Python 使用soundex功能和django搜索引擎,python,mysql,django,soundex,Python,Mysql,Django,Soundex,我正在为django/python站点构建一个搜索引擎。一个要求是soundex功能,因此如果有人搜索“smith”或“johnson”,搜索将返回“smyth”或“jonsen”等同音词。数据库是MySQL,FWIW 什么是推荐的好方法?现在我倾向于像Haystack+Whoosh这样的东西,用一些东西来捕捉soundex功能 提前感谢您的帮助。MySQL有一个soundex()函数。但是soundex算法最初是为了帮助搜索英语中的盎格鲁-撒克逊名字而开发的。现在这可能不是最好的选择 你最好还

我正在为django/python站点构建一个搜索引擎。一个要求是soundex功能,因此如果有人搜索“smith”或“johnson”,搜索将返回“smyth”或“jonsen”等同音词。数据库是MySQL,FWIW

什么是推荐的好方法?现在我倾向于像Haystack+Whoosh这样的东西,用一些东西来捕捉soundex功能

提前感谢您的帮助。

MySQL有一个soundex()函数。但是soundex算法最初是为了帮助搜索英语中的盎格鲁-撒克逊名字而开发的。现在这可能不是最好的选择

你最好还是用变音或变音

无论如何,大多数人都会存储结果。这使得索引很容易,搜索通常非常快

不过,数据完整性是一个问题。理想情况下,我想做这样的事情

create table persons (
  ...
  last_name varchar(25) not null,
  last_name_phonetic varchar(6) not null,  -- Not sure about the length
  check (last_name_phonetic = double_metaphone(last_name))
  ...
);
但这需要dbms具有内在的double_metaphone()函数,或者在CHECK()约束中支持用户定义的函数。MySQL根本不强制执行CHECK()约束,因此如果应用程序需要这种数据完整性,则需要在触发器中实现这一点

值得一提的是,PostgreSQL有一个contrib模块,它实现了soundex、metaphone、double metaphone和Levenshtein距离函数。如果由我决定,我会用PostgreSQL而不是MySQL来构建它。

MySQL有一个soundex()函数。但是soundex算法最初是为了帮助搜索英语中的盎格鲁-撒克逊名字而开发的。现在这可能不是最好的选择

你最好还是用变音或变音

无论如何,大多数人都会存储结果。这使得索引很容易,搜索通常非常快

不过,数据完整性是一个问题。理想情况下,我想做这样的事情

create table persons (
  ...
  last_name varchar(25) not null,
  last_name_phonetic varchar(6) not null,  -- Not sure about the length
  check (last_name_phonetic = double_metaphone(last_name))
  ...
);
但这需要dbms具有内在的double_metaphone()函数,或者在CHECK()约束中支持用户定义的函数。MySQL根本不强制执行CHECK()约束,因此如果应用程序需要这种数据完整性,则需要在触发器中实现这一点


值得一提的是,PostgreSQL有一个contrib模块,它实现了soundex、metaphone、double metaphone和Levenshtein距离函数。如果由我决定,我会用PostgreSQL而不是MySQL来构建它。

Soundex更像是一个bug,而不是一个特性,好吗。不管怎样,你会采取什么方法,草莓先生?说真的?我会建立一个音节,并要求用户根据Soundex更像是一个bug而不是一个特性来贡献他们自己的发音,好吗。不管怎样,你会采取什么方法,草莓先生?说真的?Mike,我会建立一个音节,并要求用户根据这个发音贡献自己的发音。这听起来是个不错的方法(虽然不完全适合这个项目)。给你信誉。听起来是个不错的方法,迈克(虽然不完全适合这个项目)。给你信誉。