我正在使用Semantic MediaWiki和Lucene搜索,并寻找一种使用搜索输入术语嵌入SQL或语义搜索查询的方法来生成一个小的结果表。
例如:如果我在文章[[Bob]]中搜索Bob的电话号码并且我的语义数据结构为[[bob的号码:: 555-555-5555]],我想搜索一下' bob number'不仅返回正常的lucene结果,还返回带有语义查询结果的小表,即内联查询,如
{{#ask: [[Bob]]
| ?Number
| format=table
}}
其中'Bob'和'Number'从搜索词填写并假设要查询的文章(即[[Bob]])遵循已知格式。
生成一个简单的表格:
| Name | Number |
| Bob | 555-555-5555 |
我也可以使用sql查询而不是语义搜索内联查询,如果有必要,我只是不知道从哪里开始修改搜索结果页面或访问搜索术语来构建该查询。任何关于从哪里开始的帮助(当然,如果有某种类型的扩展已经这样做的话)将不胜感激。
答案 0 :(得分:1)
您是否在Lucene搜索中使用此扩展名?
http://www.mediawiki.org/wiki/Extension:MWSearch
我在Sphinx而不是Lucene的搜索结果上做了类似的事情。只要你能得到一个页面名称数组,该方法就应该保持不变。
如果要评估#ask查询的结果,则必须找到生成文本片段的位置,并通过调用MediaWiki解析器替换它们。
实际上,我发现在结果集中为每个匹配调用解析器会显着降低搜索性能(每个结果页面最多15秒)。
为您的代码段使用预定义的Semantic MediaWiki属性(如果您使用语义表单很容易)并检索该属性的值而不是调用解析器,效率会高得多。