通过 ROR 项目中的 Thinking Sphinx 搜索法语
如何使用 sphinx 搜索数据库中的条目实际上是英语的法语单词?
情况是:
我有一个ROR项目,数据库中有一个名为“categories”的表,类别名称是英文,类别有很多“问题”条目。
在本地化文件 config/locals/fr.yml 中,这些类别被翻译为法语。
考虑到可扩展性,我们不能将数据库中的类别名称更改为法语。
用户可以通过输入部分关键词进行搜索。
这是一个例子: 类别名称:健康与医疗 法语:Santé et médecine
那么我该怎么做: 在搜索字段中输入“Santé médecine abc”,sphinx 将返回“健康和医疗”类别下的“问题”,并包含关键字“abc”?
How can I use sphinx to search french words which the entries in the db is actually english?
The situation is:
I have a ROR project with a table in the db called "categories", and the category names are in english, category has many "question" entries.
In localization file config/locals/fr.yml, these categories were translated to french.
Consider about expandability, we can't change the category names in the db to french.
User can search by type part of the key word.
Here is a example:
Category Name: Health and Medical
In french: Santé et médecine
so how can I do this:
type "Santé médecine abc" in the search field and sphinx will return the "questions" under "Health and Medical" category and have keyword "abc"?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,我认为你不应该使用 yml 文件来翻译数据库数据。您可以使用 yml 来翻译数据库列名称或模型名称等,但不能翻译存储在数据库中的数据。这是糟糕的设计。最好的方法是将不同的翻译存储在数据库中,但是您想知道如何在不将其存储在数据库中的情况下进行此类搜索,因此:
您可以通过多种方式来实现。如果你生成标签的链接(就像这里的SO)那么这很容易。您应该像这样生成这些链接:
或者根据您的模型和路线生成类似的链接。
如果您想要一些复选框或选择字段来选择标签,那么您应该类似于上面的示例进行操作:
在提交时,您将获得所选标签的 id 数组:
params[tags]
。First, I think that you shouldn't use yml file to translate db data. You can use yml to translate db column names, or model names and so on, but not data that is stored in db. It is bad design. The best would be to store different translations in db, but you wanted to know how to do such search without storing it in db, so:
You can do it in many various ways. If you generate links to tags (like here on SO) then it is very easy. You should generate those links like this:
Or something similar according to your models and routes.
If you want to have some checkboxes or select fields with which you select tags, then you should do it similary to above example:
Here on submit you would get array of ids of selected tags:
params[tags]
.