2013-12-05 2 views
1

Я работаю над поисковой системой wiki на основе wikimedia.Проблемы с функцией поиска Wikimedia API

На самом деле, вот мой запрос:

/external/wikiPublic/api.php?action=query&list=search&srsearch=".$search."&srprop=snippet&format=xml 

Он хорошо работает, но результаты Terribles. Например, он возвращает переназначения, как это:

<p ns="0" title="Imprimantes" snippet="#REDIRECTION [[<span class='searchmatch'>Imprimantes</span> Enseignement]] "/> 

Он пытался добавить параметр & переадресовывает = 0 в URL, но он не работает, и она по-прежнему показывает такого рода результатов. Он также помещает синтаксис wikimedia в фрагмент, как вы можете видеть. Иногда ужасно, как этот один:

<p ns="0" title="Wifi" snippet="== Le <span class='searchmatch'>Wifi</span> ici == [[Fichier:Wi-Fi_Logo.png|right|250px|Logo <span class='searchmatch'>Wifi</span>]] "/> 

Я также попытался изменить фрагмент кода для sectionsnippet, но он не работает, он возвращает ничего в sectionsnippet атрибута XML

Итак, вы знаете, как Я мог бы решить эти проблемы?

  • Предотвращение переназначения в результатах поиска
  • Удалить Wikimedia синтаксис или возвращающегося «простой текст» или выбор только соответствующий ... Я не знаю, какой из них является лучшим
  • Показать результаты частичных условий; как «imprimante», возвращающие страницы, содержащие «imprimantes»

ответ

1

Фрагменты, возвращаемые MediaWiki search API, генерируются поисковым профилем MediaWiki является configured.

По умолчанию это встроенный поиск базы данных, который действительно возвращает нераскрытые фрагменты. Чтобы получить более приятные анализируемые фрагменты, вам необходимо установить пользовательский search extension, например, на основе Lucene MWSearch, используемый Википедии и другими вики-ссылками Викимедиа.

+0

Большое спасибо! –

0

Вы пробовали с помощью простого звонка file_get_contents?

$phrase = 'World War'; 

$search = str_replace(' ', '+', $phrase); 
$search_string = 'http://en.wikipedia.org/wiki/Special:Search?go=Go&search=' . $search; 
$result = file_get_contents($search_string); 

echo $result; 

Работы хорошо для меня.

+0

Здравствуйте. Он пытался, как вы предлагаете, но это не сработало. –

+0

Что не получилось? Какую ошибку вы получили? Был ли результат не таким, каким вы планировали? – Peon

+0

У меня есть один и тот же результат, с переадресаций и Wikimedia синтаксис: "<р нс =" 0" название = "Wi-Fi" сниппет = "== Le < промежуток класс = ' searchmatch ' > Wifi </SPAN > à л ' Ici == [[Fichier: Wi-Fi_Logo.png | право | 250px | Logo < пролет класс = ' searchmatch ' > Wifi </SPAN >]] "/>

Смежные вопросы