我有两个Feed(生产中会有更多)所有关于活动的门票价格 - 这两个Feed的格式不同,但基本上显示相同的信息。
我想要做的是比较价格属性并找到最低价格,我知道如何比较实际价格
if(floatval($feed1['price']) > floatval($feed2['price']]){
return $feed1['price'];
}
else {
return $feed2['price'];
}
但是我难以理解的是如何确保我比较相同的事件价格和不同格式的Feed。
即。我怎样才能比较两种饲料中伦敦HMV演唱会常规价格的价格?
Feed 1
<type id="4558" name="Rolling Stones Concert" url="http://example1.com">
<event id="52115351" name="HMV forum - London">
<ticket name="Stalls" id="1354855" price="120"/>
<ticket name="Standing" id="4654845" price="85"/>
</event>
<event id="52115351" name="Webley Arena - London">
<ticket name="Stalls" id="4556147" price="110"/>
<ticket name="Standing" id="9743466" price="95"/>
</event>
</type>
Feed 2
<type id="5786" name="Rolling Stones Concert - World Tour" url="http://example2.com">
<market id="45645634" name="London - HMV">
<unit name="Seating" id="212770047" price="125"/>
<unit name="Standing" id="212770046" price="80"/>
</market>
<market id="45645914" name="London - Wembley">
<unit name="Seating" id="212770047" price="109"/>
<unit name="Standing" id="212770046" price="99"/>
</market>
</type>
答案 0 :(得分:2)
您正在寻找名为Information extraction (IE)的内容。这通常使用Natural language processing (NLP)来完成,例如你需要一些能够分析
的程序<type id="4558" name="Rolling Stones Concert" url="http://example1.com">
第一个Feed中的表示与
相同<type id="5786" name="Rolling Stones Concert - World Tour" url="http://example2.com">
尽管存在差异,但在第二个饲料中:
id="4558" =/= id="5786"
name="Rolling Stones Concert" =/= name="Rolling Stones Concert - World Tour"
<event> =/= <market>
id="45645634" =/= id="45645914"
name="HMV forum - London" =/= name="London - HMV"
<ticket> =/= <unit>
name="Stalls" =/= name="Stalls"
你可以想象,你可以获得每个新饲料的不同。如果您预先分析数据结构(例如&lt; event&gt; &lt; market&gt; 以及哪些属性彼此属于您,那么您可以对其进行文本分析值和进行相似性分析。
此外,如果有像 Stalls 这样的常见同义词座位(反之亦然),您可以提前降低复杂性。
[feed 1] -- streamline --> [sfeed 1]\ / [combined feed]
... X compare / align X
[feed N] -- streamline --> [sfeed N]/ \ [unknown data]